欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    Java程序设计课件(高晓黎)第十章文本显示与图形图像处理.ppt

    • 资源ID:5374364       资源大小:1.17MB        全文页数:73页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java程序设计课件(高晓黎)第十章文本显示与图形图像处理.ppt

    ,第十章 文本显示与图形图像处理,第1章走马观花看Java,目 录,重点与难点点拨,Java绘图基础,Java图像处理,经典练习题,Graphics绘图,字体设置,本章知识重点,GUI组件及Graphics类的绘图方法,字体设置,基本图形绘制的各方法及画布Canvas,Java图像处理,与图形图像处理相关的类,本章知识难点,Java绘图基础,Java的绘图机制,与图形图像处理相关的类 java中支持图形图像处理的类与接口主要定义于java.awt类库中,Java绘图基础,Graphics类,Graphics类中封装了几乎所有的图形处理的方法,该类用于在一个二维坐标系中绘制图形与显示格式化文字。由于Graphics类定义于java.awt包中,在绘制图形的程序中,必须引入java.awt,即在程序开头需加上以下语句:import java.awt.*;或import java.awt.Graphics;,Java绘图基础,Graphics类的绘图区域为能够绘制并显示图形的一些组件,坐标原点在组件的左上角,X轴为水平方向,坐标值从左至右逐渐增大,Y轴在垂直方向,坐标值从上向下逐渐增大。Java坐标的度量单位是像素,在Java的图形坐标系统中,坐标值只能为整数。由于不同的平台具体实现绘图功能中存在着一定差异,Graphics类为抽象类,不能用new命令创建Graphics类实例对象,Java只提供给用户一个不依赖于具体平台的通用接口,使用户能够调用Graphics类的各种绘图方法,实现绘图与绘制文本的功能。,Java绘图基础,GUI程序中,文本的输出显示是作为图形对象来处理的,控制台应用程序中的System.out.println()方法,只能以DOS字符的形式,在命令行窗口上显示文字。GUI界面中字符串信息的显示,要使用Graphics或Graphics2D提供的绘制字符或字符串信息的成员方法。,图形文本,Java绘图基础,Graphics类提供了三种绘制文字的方法:字符串输出方法:drawString(String s,int x,int y)。字符数组输出方法:drawChars(char s,int offset,int length,int x,int y)。字节数组输出方法:drawBytes(byte s,int offset,int length,int x,int y)。其中x、y参数为字符串输出的位置坐标。例如:g.drawString(“我的爱好是读书和听音乐”,50,100);语句将会绘出一串文本,输出位置坐标为(50,100)。,Java绘图基础,GUI编程中,Color类定义了操作颜色的常量与方法,该类的完整包路径为java.awt.Color。Color类常用的三种构造方法的定义为:public Color(int r,int g,int b);public Color(float r,float g,float b);public Color(int rgb);Color类中封装了常用的13种标准颜色的符号常量。如:Color.BLACK Color.WHITE Color.RED Color.GREEN Color.BLUE Color.YELLOW 等,颜色设置,Java绘图基础,此外,Color类还提供了获取RGB颜色分量的对应方法:public int getRed();/获取当前颜色的红色分量值(范围为0,255)。public int getGreen();/获取当前颜色的绿色分量值(范围为0,255)。public int getBlue();/获取当前颜色的蓝色分量值(范围为0,255)。,Java绘图基础,如创建一个以粉红色pink(RGB值为:255,175,175)前景显示“姓名”的标签对象,可用以下语句实现:Color labelColor=new Color(255,175,175);Label lblName=new Label(“姓名”);lblName.setForeground(labelColor);或者用以下等价的方式实现:Label lblName=new Label(“姓名”);lblName.setForeground(Color.PINK);,Java绘图基础,java.awt.Component类作为大多数GUI组件的基类,定义了paint()方法,用来实现在组件上绘制图形的功能。applet小程序的基类:Applet或Japplet,也间接地由Component类派生,因此applet小程序也具有paint()方法 paint()方法定义:void paint(Graphics g);paint()方法通常由系统自动调用,用户一般不能直接在程序中显式调用它,而是通过repaint()方法来间接调用它。组件首次显示外观时,applet小程序在被加载运行时,系统都会调用相关的paint()方法。,GUI组件的绘图方法,Component类与paint()方法,Java绘图基础,此外,Component类中还定义了另外两个直接或间接调用paint()方法的方法:更新方法update(Graphics g);当组件的尺寸、外观等被改变时,系统将调用此方法,重新绘制组件。update()方法的实现中包含了对paint()方法的调用。重绘方法repaint();该方法没有参数,执行时会清除组件的原有背景图形,并使用paint()方法重新绘制该组件。用户可以在程序中直接调用repaint()方法,当组件为轻量级组件时,该方法会直接调用paint()方法,否则会通过调用update()方法间接调用paint()方法。,Java绘图基础,【例】在一个300200的Frame窗口内,用红色绘制四叶玫瑰曲线。,Java绘图基础,import java.awt.*;import java.awt.event.*;import java.awt.Color;public class Exa_10_1 extends Frame private static final double PI=3.1415926;private int appWidth,appHeight;public Exa_10_1(String title)super(title);this.setSize(300,200);/实现关闭窗口的功能 this.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););,Java绘图基础,public void paint(Graphics g)super.paint(g);/调用父类的绘制方法/获取当前窗口的宽度与高度值 appWidth=this.getWidth();appHeight=this.getHeight();int ox,oy,x,y;/设置原点(ox,oy)的坐标为当前窗口中心 ox=appWidth/2;oy=appHeight/2;g.setColor(Color.RED);/设置绘图的前景色,Java绘图基础,/绘制坐标轴 g.drawLine(ox,10,ox,appHeight);g.drawLine(0,oy,appWidth,oy);/定义控制角度与半径变化的变量 int i,j=10;double angle,r;while(j100)for(i=0;i1023;i+)/计算最新的角度 angle=i*PI/512;r=j*Math.sin(2*angle);,Java绘图基础,/计算最新的轨迹点坐标 x=(int)Math.round(r*Math.cos(angle)*2);y=(int)Math.round(r*Math.sin(angle);g.fillOval(ox+x,oy+y,1,1);/画轨迹点 j=j+5;/增进的步长 public static void main(String args)Exa_10_1 app=new Exa_10_1(Paint()Method Usage);app.setVisible(true);,Java绘图基础,组件的基类Component类提供了一组get类型的方法用来获取当前绘图上下文环境的一些重要参数。getGraphics()为当前组件创建 graphics上下文环境getGraphicsConfiguration()获取相关的Graphics设置getForeground()获取与当前组件的前景颜色getBackground()获取与当前组件的背景颜色getFont()获取与当前组件的字体对象getFontMetrics(Font font)获取指定字体的样式信息,Component类的get/set方法组,Java绘图基础,Component类还提供了一组用来设置外观与行为的set方法:setEnabled(),设置组件的可用性。setVisible(),设置组件的可见性。setForeground(),设置组件的前景色。setBackground(),设置组件的背景色。setBounds(),设置组件的起始位置与尺寸大小。setLocation(),设置组件的起始位置。setSize(),设置组件的尺寸大小。setPreferredSize(),设置组件首选的尺寸。setMaximumSize(),设置组件的最大尺寸。setMinimumSize(),设置组件的最小尺寸。此外,常用的还有一个设置组件显示文字字体类型与样式的一个方法:public void setFont(Font f)。,Java绘图基础,【例】用组件的getGraphics()方法实现如下所述的功能:在一个300200的JFrame窗口内,放置一个标签与一个按钮,当点击按钮后,标签中绘制一个黄色的椭圆,并在椭圆内显示蓝色的RGB值。,Java绘图基础,import java.awt.*;import java.awt.event.*;import java.awt.Color;import javax.swing.*;public class Exa_10_2 extends JFrame implements ActionListener private JLabel jlblDraw=new JLabel();private JButton jbtnDraw=new JButton(开始绘图);public Exa_10_2(String title)super(title);this.setSize(300,200);jlblDraw.setSize(300,150);/实现关闭窗口的功能,Java绘图基础,this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jbtnDraw.addActionListener(this);Container contentPane=this.getContentPane();contentPane.setLayout(new BorderLayout();contentPane.add(jlblDraw,BorderLayout.CENTER);contentPane.add(jbtnDraw,BorderLayout.SOUTH);/按钮点击事件响应方法 public void actionPerformed(ActionEvent e)/创建标签的Graphics上下文环境 Graphics g=jlblDraw.getGraphics();,Java绘图基础,/用黄色画一填充椭圆 g.setColor(Color.YELLOW);g.fillOval(50,10,200,130);/用蓝色显示当前颜色的字符串 g.setColor(Color.BLUE);g.drawString(g.getColor().toString(),65,75);/使按钮变得不再可用 jbtnDraw.setEnabled(false);public static void main(String args)Exa_10_2 app=new Exa_10_2(getGraphics()Method Usage);app.setVisible(true);,Java绘图基础,paintComponent(),用来绘制几何图形,渲染图形文字。paintComponent()方法的原型定义如下:protected void paintComponent(Graphics g);JComponent类的paintComponent()方法与Component类的paint()具有完全相同的参数形式,两种方法的功能与使用也基本类似。,JComponent类与paintComponent()方法,Java绘图基础,Swing应用中,经常会在JPanel组件中绘制图形。通常的做法是:定义一个JPanel类的子类,在该子类中覆盖/重写类的paintComponent()方法,在方法体内放入绘图的操作语句。然后再将该JPanel组件添加到主窗口的内容窗格(ContentPane)内。具体的实现结构类似于如下的代码:class drawPanel extends Jpanel public void paintComponent(Graphics g)/super.paintComponent(g);/相关的图形或文字绘制语句,字体设置,一个Font类的对象表示了一种字体显示效果,包括字体类型、Font MyFont=new Font(TimesRoman,Font.BOLD,12);MyFont对应的是12磅TimesRoman类型的黑体字,其中指定字型时要用到Font类三个常量:Font.PLAIN,Font.BOLD,Font.ITALIC。如果希望使用该Font对象,则可以利用Graphics类的setFont()方法:g.setFont(MyFont);如果希望指定控制组件,如按钮或文本框中的字体效果,则可以使用控制组件的方法setFont()。如设btn是一个按钮对象,则语句:btn.setFont(MyFont);另外,与setFont()方法相对的getFont()方法将返回当前Graphics或组件对象使用的字体。,Font类,字体设置,【例】获取当前系统中所有可用字体的名称,在标签中显示出这些可用字体的数目,在文本区中显示出这些可用字体的名称。,字体设置,import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Exa_10_4 extends JFrame implements ActionListener/定义GUI所涉及的组件 JLabel jlblTotalFonts=new JLabel();JButton jbtnDisp=new JButton(显示当前可用字体名称);JTextArea jtxtaFontNames=new JTextArea();JScrollPane jsclpane4txtArea=new JScrollPane(jtxtaFontNames);,字体设置,public Exa_10_4(String title)super(title);jbtnDisp.addActionListener(this);/为标签组件设置前景色为红色 jlblTotalFonts.setForeground(new Color(255,0,0);/设置文本区组件为不可编辑状态 jtxtaFontNames.setEditable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/添加各个组件到窗口的内容窗格中 Container contentPane=this.getContentPane();contentPane.setLayout(new BorderLayout();contentPane.add(jlblTotalFonts,BorderLayout.NORTH);,字体设置,contentPane.add(jsclpane4txtArea,BorderLayout.CENTER);contentPane.add(jbtnDisp,BorderLayout.SOUTH);this.setSize(300,300);this.setVisible(true);/响应按钮点击事件 public void actionPerformed(ActionEvent e)jbtnDisp.setEnabled(false);/使自己失效以免两次被点击 String availableFontNames;/获取当前平台可用的字体集 GraphicsEnvironment ge=GraphicsEnvironment.,字体设置,getLocalGraphicsEnvironment();availableFontNames=ge.getAvailableFontFamilyNames();/当前平台可用字体的总数 int total=availableFontNames.length;jlblTotalFonts.setText(当前平台系统可用的字体总数为:+total+);/将当前平台可用字体名称添加到文本区中 for(int k=0;ktotal;k+)jtxtaFontNames.append(availableFontNamesk+n);public static void main(String args)new Exa_10_4(Font Usage Demo);,字体设置,FontMetrics类定义了字体的规格对象,提供了比Font类更详尽的特定字体的描述信息。这些信息可以通过调用FontMetrics类的相关方法来获得。FontMetrics类提供了获取文字样式中各类规格信息的成员方法。创建FontMetrics类对象要通过调用Graphics类的getFontMetrics()方法来实现。如:public void paint(Graphics g)FontMetrics fm=g.getFontMetrics();,FontMetrics类,字体设置,【例】编程实现演示FontMetrics类的字体规格信息。用一根粗黑线表示Baseline,另外三根分别表示字体的Leading、Ascent和Descent的位置。窗口顶端包含输入显示文本内容的文本域及三个用来选择字体名称、字体样式及字号的组合列表框。当在文本域中输入新的内容并敲回车,或者改变了任何一个组合列表框的当前选择,都会使字体规格信息的演示内容发生变化。,Graphics绘图,利用Graphics类可绘制的图形有直线、各种矩形、多边形、圆和椭圆等。下面的例子综合了这些方法。,Graphics类的绘图方法,Graphics绘图,import java.awt.*;import java.applet.Applet;public class DrawFigures extends Applet public void paint(Graphics g)g.drawLine(30,5,40,5);/画直线 g.drawRect(40,10,50,20);/画矩形框(左上角x坐标,y坐标,x轴尺寸,y轴尺寸)g.fillRect(60,30,70,40);/画实心矩形 g.drawRoundRect(110,10,130,50,30,30);/画圆角矩形框 g.drawOval(150,120,70,40);/画椭圆形框(左上角x坐标,左上角y坐标,x轴尺 寸,y轴尺寸),若x 轴尺寸与y轴尺寸相等,则画出圆形 g.fillOval(190,160,70,40);/画实心椭圆,Graphics绘图,g.drawOval(90,100,50,40);/画椭圆框 g.fillOval(130,100,50,40);/画实心椭圆 drawMyPolygon(g);/自定义的画多边形的方法 g.drawString(They are figures!,100,220);public void drawMyPolygon(Graphics g)int xCoords=30,50,65,119,127;/保存多边形各点x坐标的数组 int yCoords=100,140,127,169,201;/保存多边形各点y坐标数组 g.drawPolygon(xCoords,yCoords,5);/画自由多边形框,Graphics绘图,要在Java程序图形界面的容器中绘制图形,首先,需要明确希望绘制的图形是什么,是圆、椭圆,还是直线,这由所选定的方法来确定;其次,需要指明所绘制图形或文字的大小和位置,,Graphics绘图,绘制直线的方法格式为:drawline(intx1,inty1,intx2,inty2)。其中整型参数对(x1,y1)代表直线的起点,(x2,y2)代表直线的终点。,基本图形绘制,点(Point),直线(Line),Graphics绘图,【1】普通矩形线条方式:drawRect(int x,int y,int w,int h)填充方式:fillRect(int x,int y,int w,int h)【参数说明】(x,y)为矩形的左上角坐标;w为矩形的宽度;h为矩形的高度。drawRect()和fillRect()方法的唯一不同之处在于:fillRect()方法画出矩形框后用前景色将其填充。,矩形(Rectangle),Graphics类中提供了三种矩形类型。这三类矩形都包括线条 方式与填充方式两类绘图方法。,Graphics绘图,【2】圆角矩形线条方式:drawRoundRect(int x,int y,int w,int h,int arcWidth,int arcHeight)填充方式:fillRoundRect(int x,int y,int w,int h,int arcWidth,int arcHeight)【参数说明】圆角性质参数arcWidth与arcHeight,分别代表了圆角弧对应椭圆的的长轴(水平轴)与短轴(垂直轴)。圆角矩形的圆角性质参数的意义见图10.12。当arcWidth=w且arcHeight=h时,圆角矩形就成为一个椭圆。因此可用绘制圆角矩形的方法生成椭圆。,Graphics绘图,【3】立体矩形线条方式:draw3DRect(int x,int y,int w,int h,boolean raised)填充方式:fill3DRect(int x,int y,int w,int h,boolean raised)【参数说明】布尔型的raised参数用来控制立体矩形的凸出或凹入效果。raised为true时,画出的立体矩形是凸起的;raised为false时,画出的立体矩形是凹陷的。,Graphics绘图,椭圆绘制方法与普通矩形的方法在形式上相同的,这是因为椭圆的规格大小是用它的外接矩形来指定的。线条方式:drawOval(int x,int y,int w,int h)填充方式:fillOval(int x,int y,int w,int h)【参数说明】x、y参数代表椭圆外接矩形的左上角位置坐标。参数w、h代表椭圆外接矩形的宽度和高度。,椭圆(Oval),Graphics绘图,圆弧是椭圆的一部分,夹在两个角之间,因此画圆弧的方法比画椭圆的方法多了两个角度参数(都以角度为单位):起始角和张角。起始角确定了圆弧的起始位置,张角确定了圆弧的大小。张角可正可负,当取正值时,画出的为沿逆时针方向的圆弧;取负值时,画出的为沿顺时针方向的圆弧。当张角取值大于360时,画出的就是椭圆。,圆弧(Arc),Graphics绘图,drawArc()方法画出的是一段圆弧,而fillArc()方法画出的是一个扇形。线条方式:drawArc(int x,int y,int w,int h,int startAngle,int arcAngle)填充方式:fillArc(int x,int y,int w,int h,int startAngle,int arcAngle)【参数说明】前四个参数x、y、w和h规定了圆弧所对应椭圆的规格大小。startAngle表示圆弧的起始角。arcAngle表示圆弧的张角,可取正负整数值代表有方向的角度。,Graphics绘图,线条方式画出的多边形一般是不封闭的,除非首顶点与尾顶点坐标值一样。但填充方式画出的填充多边形则为封闭的多边形,因为填充不应该溢出多边形的有效范围。根据绘制所采用的数据表达方式的不同,多边形的绘制方法可分为两组,每一组又具有线条与填充两种绘制方式。,多边形(Polygon),Graphics绘图,第一组:用坐标数组作为多边形的顶点序列绘制多边形:线条方式:drawPolygon(int xPoints,int yPPoints,int nPoints)填充方式:fillPolygon(int xPts,int yPts,int n)【参数说明】xPoints与yPPoints为两个数组,分别保存多边形多个顶点的X坐标值与Y坐标值。两个数组的长度应该相等nPoints表示多边形顶点的个数,其值不能超过两个数组的长度。多边形绘制方法将两个数组对应的顶点按顺序用直线连接起来,组成一个多边形,多边形的顶点坐标序列为:(xPoints0,yPPoints0),(xPoints1,yPPoints1)(xPointsn,yPPointsn)。,Graphics绘图,第二组:用Polygon对象作为数据源绘制多边形:线条方式:drawPolygon(Polygon p)填充方式:fillPolygon(Polygon p)【参数说明】参数p为Polygon对象。Polygon类是java.awt包内提供的工具类,该类封装了一个封闭区域的节点坐标序列。该类具有以下构造方法:Polygon(),创建一个空的多边形对象。Polygon(int xpoints,int ypoints,int npoints),创建以指定参数为初始化值的多边形对象。其参数意义与drawPolygon()方法相同。Polygon类具有addPoint(int x,int y)成员方法,用来将一个指定点的坐标添加到多边形对象中。,画布Canvas,Canvas是java.awt包中用来绘图的矩形组件,其作用类似于Windows的画图板,用户可在这块区域上直接画出图形。Canvas继承自Component类,具有Paint(Graphics g)、update(Graphics g)及repaint()方法,能够响应鼠标和键盘事件,并具有自己的坐标系统。画布提供了一块专门的图形区域,通过设定自己的边界而和其它组件区分开,以保护画面不被覆盖。即使画面被破坏,仍可通过调用Canvas的paint()方法重画图形,恢复原有的状态。Canvas类的构造方法有两种形式:无参构造方法Canvas(),用来创建一个新的画布对象。有参构造方法Canvas(GraphicsConfiguration config),创建一个适用于指定的绘图配置对象的的画布对象。,画布Canvas,如Canvas canvas1=new Canvas();语句就创建了一个空白的画布对象。创建了Canvas对象后,还要调用setSize()方法设定这个画布的大小。Canvas类的重要方法包括:paint(Graphics g),用来在画布上绘制图形。void update(Graphics g),用来更新画布。用户无法直接使用Canvas的paint()方法,使用时需要先定义一个以Canvas为基类的子类,并在子类中重写paint()方法;然后在子类的paint()方法中,借助于方法的Graphics对象参数,调用Graphics类的绘图方法,实现用户的绘图操作。,画布Canvas,【例】使用画布实现以下功能:在画布上沿一条水平直线,从左到右绘制一系列的圆,圆的半径逐步增大,所有圆的圆心坐标在水平直线上。,画布Canvas,import java.awt.*;import javax.swing.*;import java.awt.Color;/建立一个Canvas类的子类class MulOvalsCanvas extends Canvas private int oy;private int canvasWidth;/构造方法中设置画布尺寸 public MulOvalsCanvas()this.setSize(450,250);oy=(this.getHeight()-30)/2;canvasWidth=this.getWidth();,画布Canvas,/重写paint()方法 public void paint(Graphics g)int ox=12;int r=10;/绘制水平直线 g.setColor(Color.RED);g.drawLine(0,oy,canvasWidth,oy);/沿水平直线绘制一系列的圆 g.setColor(Color.BLUE);/构造循环体 while(ox+r)(canvasWidth-15)g.drawOval(ox-r,oy-r,2*r,2*r);r+=5;ox+=15;,画布Canvas,public class Exa_10_11 extends JFrame/建立一个JPanel子类的对象 MulOvalsCanvas multipleOvals=new MulOvalsCanvas();public Exa_10_11(String title)super(title);this.setSize(450,250);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Container contentPane=this.getContentPane();contentPane.add(multipleOvals);this.setVisible(true);public static void main(String args)Exa_10_11 app=new Exa_10_11(Canvas Usage Demo);,Java图像处理,静态图像处理 常用的图像文件格式有BMP、JPEG、GIF、PNG等格式。图像的基本操作 Java中处理图像的基本操作主要包括:创建图像对象,获取图像资源,加载图像,显示图像等。,Java图像处理,java.awt的Component类提供了一个createImage()方法来生成Image图像对象。CreateImage()方法有两种重载形式:Image createImage(ImageProducer producer);方法的第一种形式从一个指定的图像产生器producer创建一幅图像并由方法返回。producer是一个现实了ImageProducer接口的类对象。Image createImage(int width,int height);方法的第二种形式创建并返回一幅具有指定宽度和高度的空白图像。,创建图像对象,Java图像处理,获取本地图像资源通过java.awt.Toolkit类的静态方法getDefaultToolkit(),获得当前默认的Toolkit(工具包)对象,然后再使用Toolkit类的getImage()方法,就可以从指定的文件中读取GIF、JPEG或PNG格式的图像数据了。例如:从本机上获取名为myPhoto.gif的文件内容,并将文件中的图像数据生成Image对象myPhoto的语句序列为:String fileName=“myPhoto.gif”;Image myPhoto=olkit.getDefaultToolkit().getImage(fileName);,获取图像资源,Java图像处理,获取网络图像资源如果要获取的图像资源在网络上,则需要使用URL类来得到图像。Applet类提供了getCodeBase()方法,用以返回一个URL对象,该URL对象代表了applet小程序在网络上地址。通常的做法为:用网络地址与图像文件名组成的字符串生成一个URL对象,然后使用Toolkit类的getImage()方法,读取远程的图像数据,创建对应的图像对象。例如要获取Sun公司的标志图片文件sun_logo.gif:URL url=new URL(“http:/sunLogo=Toolkit.getDefaultToolkit().getImage(url);,Java图像处理,java.applet.Applet类提供了getImage()方法来实现图像的加载。通过getImage()方法,能够将JPEG、GIF或PNG格式的图像文件转换为Image对象,便于在程序中进行操作。getImage()方法有以下两种重载形式:Image getImage(URL url);/参数url指定了图像资源的位置路径与名称。Image getImage(URL url,String imageName);/参数指定了图像的位置路径及图像文件名称的Image类的一个实例对象。,加载图像,Java图像处理,Java应用程序中图像的显示要通过调用Graphics类的drawImage()方法来实现。drawImage()方法有6种重载形式,可根据需要任选一种来使用。下面给出drawImage()众多重载方法中的一种:boolean drawImage(Image imgObj,int left,int top,ImageObserver imgOb);该方法显示由imgObj对象所引用的图像文件,显示区域的左上角坐标为(left,top)。ImgOb是一个实现了ImageObserver接口的类的对象。ImageObserver接口由所有的AWT组件所实现。例如,要显示本机上myPhoto.gif文件中的图像:public void paintComponent(Graphics g)Image myPhoto=Toolkit.getDefaultToolkit().getImage(“myPhoto.gif”);g.drawImage(myPhoto,90,60,null);,显示图像,Java图像处理,【例】在窗口中显示当前目录下card.jpg图像文件的内容。,Java图像处理,import java.awt.*;import javax.swing.*;/建立一个JPanel类的子类class DrawImage extendsJPanel/重写paintComponent()方法 public void paintComponent(Graphics g)/调用父类的paintComponent()方法 super.paintComponent(g);/获取图像资源并创建Image对象Image cardImage=Toolkit.getDefaultToolkit().getImage(card.jpg);/将当前图像原始尺寸缩小一半显示 int showWidth=cardImage.getWidth(this)/2;int showHeight=cardImage.getHeight(this)/2;g.drawImage(cardImage,15,10,showWidth,showHeight,this);,Java图像处理,public class Exa_10_12 exte

    注意事项

    本文(Java程序设计课件(高晓黎)第十章文本显示与图形图像处理.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开