Transparancy 8Java语言概述(benet).ppt
《Transparancy 8Java语言概述(benet).ppt》由会员分享,可在线阅读,更多相关《Transparancy 8Java语言概述(benet).ppt(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Version 3.0图形编程图形编程第八章第八章回顾回顾Java最新的事件处理方法是基于授权事最新的事件处理方法是基于授权事件模型。件模型。事件是描述事件源状态变化的对象。用事件是描述事件源状态变化的对象。用户与户与GUI组件交互就会生成事件。组件交互就会生成事件。事件源是一个生成事件的对象。当这个事件源是一个生成事件的对象。当这个对象的内部状态改变时,事件就会发生。对象的内部状态改变时,事件就会发生。在发生事件时,事件源将调用监听器定在发生事件时,事件源将调用监听器定义的相应方法。义的相应方法。2 2目标目标解释图形的绘制解释图形的绘制描述描述 Graphics 对象对象了解了解 Font
2、 类类了解了解 FontMetrics 类类了解了解 Color 类类掌握绘制各种图形的方法掌握绘制各种图形的方法 3 3所有的图形被画到相关联的窗口中。所有的图形被画到相关联的窗口中。完全可以直接在框架(完全可以直接在框架(Frame)中绘入文中绘入文本信息,甚至可以直接在框架中绘图。本信息,甚至可以直接在框架中绘图。框架经常被设计为一个组件容器。一般首框架经常被设计为一个组件容器。一般首先在一个面板中进行绘制,然后再将这个先在一个面板中进行绘制,然后再将这个面板添加到框架面板添加到框架。在框架中显示信息在框架中显示信息 4 4paintComponent 方法方法JPanel 非常适合于绘
3、制自定义图形非常适合于绘制自定义图形其图形对象是作为其图形对象是作为 paintComponent()方法的方法的参数获得的。参数获得的。要创建自定义图形,需要编写扩展要创建自定义图形,需要编写扩展 JPanel 类的新类。并覆盖父类的类的新类。并覆盖父类的paintComponent()方法:方法:publicvoidpaintComponent(Graphicsg)./将在这里通过参数将在这里通过参数g g完成绘制代码完成绘制代码5 5Graphics对象对象paintComponent方法包含一个方法包含一个Graphics类型类型的参数。的参数。Graphics对象记录针对绘制图形和文
4、本的一对象记录针对绘制图形和文本的一系列设置,系列设置,比如设置的图标或当前颜色、比如设置的图标或当前颜色、字体等。字体等。Java中,所有绘制都必须通过一个图形对中,所有绘制都必须通过一个图形对象。象。6 6Graphics对象的局限性对象的局限性可以用可以用Graphics对象绘制的图形是原始图对象绘制的图形是原始图形。形。对于这些图形,不能使用实数坐标对于这些图形,不能使用实数坐标不能绘制虚线或宽度不定的线条不能绘制虚线或宽度不定的线条不能使用纹理或渐变颜色填充形体不能使用纹理或渐变颜色填充形体7 7Graphics2D对象对象Java2D 包括一个包括一个 Graphics2D 类,此
5、类扩展类,此类扩展了了 Graphics 类,所有图形方法都可以配合类,所有图形方法都可以配合 Graphics2D 对象使用对象使用Java 2D 图形的重要功能:图形的重要功能:颜色和图案:图形可以用渐变颜色和填充图案着色。颜色和图案:图形可以用渐变颜色和填充图案着色。透明绘制:图形的不透明度通过透明绘制:图形的不透明度通过 透明值控制。透明值控制。本地字体:平台上的所有本地字体都可用于绘制文本。本地字体:平台上的所有本地字体都可用于绘制文本。画笔的显式控制:可以使用线条的粗细、虚线图案以及画笔的显式控制:可以使用线条的粗细、虚线图案以及段连接样式。段连接样式。坐标系的转换:可以使用平移、
6、缩放、旋转和剪切坐标系的转换:可以使用平移、缩放、旋转和剪切 为为了了解解决决图图形形对对象象的的局局限限性性,在在Java1.1以以后后的版本中引入了的版本中引入了Java 2D。8 8基本的绘图方法基本的绘图方法 publicvoidpaint(Graphicsg)g.setColor(someColor);/设置颜色设置颜色g.setFont(someLimitedFont);/设置字体设置字体g.drawString(.);/绘制字符串绘制字符串g.drawLine(.);/画线画线g.drawRect(.);/绘制图形轮廓绘制图形轮廓 g.fillRect(.);/绘制填充图形绘制填
7、充图形 g.drawPolygon(.);/绘制图形轮廓绘制图形轮廓 g.fillPolygon(.);/绘制图形轮廓绘制图形轮廓 .每个每个 AWT 组件定义一种传递组件定义一种传递 Graphics 对象的对象的 paint方法,绘制便是在该对象上执行。方法,绘制便是在该对象上执行。设置设置画画笔参笔参数数9 9Java 2D 中的基本绘图方法中的基本绘图方法publicvoidpaintComponent(Graphicsg)super.paintComponent(g);Graphics2Dg2d=(Graphics2D)g;/强制转换为强制转换为Graphics2Dg2d.setPa
8、int(fillColorOrPattern);g2d.setStroke(penThicknessOrPattern);g2d.setComposite(someAlphaComposite);g2d.setFont(anyFont);g2d.setColor(anyColor);g2d.translate(.);g2d.rotate(.);g2d.scale(.);g2d.shear(.);g2d.setTransform(someAffineTransform);SomeShapes=newSomeShape(.);g2d.draw(s);/绘制图形轮廓绘制图形轮廓g2d.fill(s)
9、;/绘制填充图形绘制填充图形设置设置画画笔参笔参数数1010Font 类类Font 类只有一个构造函数类只有一个构造函数:publicFont(Stringname,intstyle,intpointsize)参数参数name表示字体的名称。表示字体的名称。参数参数style表示样式可以是表示样式可以是Font.PLAIN、Font.BOLD或或Font.ITALIC参数参数pointsize表示字体的点数,即以磅为单位表示字体的点数,即以磅为单位的字体大小,可以是的字体大小,可以是 11、12、14、16 等等。publicvoidpaint(Graphicsg).g.setFont(new
10、Font(Helvetica,Font.ITALIC,18);g.drawString(Drawwhereeveryouwant,100,10);.1111通过使用通过使用 getFontMetrics()方法,而不是方法,而不是new运算符(因为它是一个抽象类),可以创建运算符(因为它是一个抽象类),可以创建该类的对象。该类的对象。这个对象包含与字体相关的大量信息,包括这个对象包含与字体相关的大量信息,包括字符的高度、按像素数计算的字符串宽度等。字符的高度、按像素数计算的字符串宽度等。常用方法如下:常用方法如下:intstringWidth(Strings):返回返回字符串宽度字符串宽度in
11、tcharWidth(charc):返回字符返回字符c c的宽度的宽度intgetHeight():返回字体的高度返回字体的高度FontMetrics 类类有有时时,需需要要测测量量用用特特殊殊字字体体显显示示的的一一个个字字符符串串,可以使用可以使用FontMetrics 类类1212使用字体示例使用字体示例1importjava.awt.*;importjavax.swing.*;classFontsPanelextendsJPanelpublicvoidpaintComponent(Graphicsg)Stringquote=Happinessisanattitude.;Fontf=ne
12、wFont(Georgia,Font.ITALIC,16);g.setFont(f);g.drawString(quote,20,20);该包中包含该包中包含JPanel和和JFrame组件组件创建一种新字创建一种新字体,并将该字体,并将该字体设置为当前体设置为当前字体字体publicclassFontsDemoextendsJFramepublicFontsDemo()setTitle(test);setSize(300,200);ContainercontentPane=getContentPane();contentPane.add(newFontsPanel();publicstati
13、cvoidmain(Stringargs)FontsDemoframe=newFontsDemo();frame.show();1313使用字体示例使用字体示例2importjava.awt.*;importjavax.swing.*;classFonts2PanelextendsJPanelpublicvoidpaintComponent(Graphicsg)Stringmyquote=Happinessisanattitude.;Fontf=newFont(TimesNewRoman,Font.BOLD+Font.ITALIC,24);g.setFont(f);FontMetricsfm=
14、getFontMetrics(f);intx=(getSize().width-fm.stringWidth(myquote)/2;inty=getSize().height/2;g.drawString(myquote,x,y);创建一种新字创建一种新字体,并设为当体,并设为当前字体前字体求字符串宽求字符串宽度度1414列出当前平台上所有可用字体列出当前平台上所有可用字体importjava.awt.*;publicclassListFontspublicstaticvoidmain(Stringargs)GraphicsEnvironmentenv=GraphicsEnvironment.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Transparancy 8Java语言概述benet Java 语言 概述 benet
限制150内