ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:136.41KB ,
资源ID:3046938      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3046938.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java 2D高级绘图.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java 2D高级绘图.docx

1、Java 2D高级绘图Java 2D高级绘图【教学目标】在本讲中希望您能掌握和了解如下知识点:Graphics类,如何获取Graphics类,文本字串的显示,图形编程,图像编程以及Java2D高级编程技术等。 利用Graphics类的绘图技术1、AWT图形、文本、图像绘制编程(1)有关的类:主要涉及java.awt包中的Graphics类。(2)Graphics类对象:它代表当前组件如窗口的绘图环境。(3)绘制函数调用Graphics类中的相应的绘制图形、绘制文本、绘制图像等函数以实现在图形窗口下输出图形、文本、图像等。 图4-1(4)编程方法在组件的paint()函数内或在组件的其它函数内如

2、事件响应函数内获得java.awt包中的Graphics类的对象,然后调用Graphics类中相应的绘制函数来实现输出。(5)paint()函数它是在 java.awt.Component 类(所有窗口对象的基类)所提供的一个方法,当系统需要重新绘制组件时,将调用该方法。paint() 方法只有一个参数,该参数是 Graphics 类的实例。下面给出一个实例。public void paint(Graphics g) Color myColor= new Color(255, 0, 0); g.setColor(myColor); g.drawString(这是Java中的带颜色的文字串, 1

3、00,100) ; g.drawRect( 10,10,100 ,100) ;2、组件绘制的时机(1)组件外形发生变化时:如窗口的大小、位置、图标化等显示区域更新时,AWT自动从高层直到叶结点组件相应地调用各组件的paint()方法,但这可能有一个迟后感。(2)程序员也可直接调用某一个组件的repaint()或paint() ,以立即更新外观(如在添加新的显示内容后)。注意:如果要求保留上次的输出结果时可以调用paint(),而不要求保留上次的输出结果只希望用户能看到最新的输出结果时可以调用repaint()。 (3)AWT响应外部的事件时,如首先显示于屏幕或需刷新时,AWT也会直接调用rep

4、aint()函数。3、坐标系统 (1)Java 2D API 有两种坐标系统用户空间是一种与设备无关的逻辑坐标系统。应用程序独占使用此坐标系统。所有传入 Java 2D 绘制例程中的几何图形均在用户空间中定义。 设备空间是一种与设备有关的坐标系统,它根据目标绘制设备的不同而变化。 注意:Java 2D 系统自动在用户空间和目标绘制设备的设备空间之间执行必要的转换。虽然显示器的坐标系统和打印机的坐标系统有很大的差别,但这些差别对应用程序并无影响。(2)用户空间 用户空间的原点位于空间左上角,x 值向右递增,y 值向下递增。用户空间是对所有可能的设备坐标系统的一种抽象。某一设备的设备空间与用户空间

5、的原点和方向可能相同,也可能不同。无论怎样,当绘制图形对象时,用户空间坐标将自动变换为相应的设备空间。通常由内部平台设备驱动程序执行这项转换。 4、如何获取Graphics类对象并绘制 (1)原理绘制之前,必须先获取Graphics类对象。因为它包含有当前组件的绘图环境,从而实现在当前组件(如图形窗口)内输出。(2)方法一在paint()内则可通过其形参(它代表当前组件的绘图环境),从而调用Graphics类中的相关的绘制成员函数。public void paint(Graphics g) g.setColor(Color.LIGHT_GRAY); g.fillRect(1,1,100-2,1

6、00-2); g.draw3DRect(0,0,100-1,100-1,true); g.setColor(this.getForeground(); g.drawRect(2,2,100-4,100-4); (3)方法二先在组件类(如Applet、Frame或其它组件的成员函数)中调用getGraphics()(它返回当前组件的Graphics类对象)来获取当前组件的绘图环境,再强制绘制输出。从而可在paint()函数之外(如事件响应函数内)产生绘制动作。public boolean mouseDrag(Event evt, int x, int y) Graphics g=getGraph

7、ics() ; /在鼠标的mouseDrag事件中画出鼠标的当前位置的点 g.setColor(Color.red) ; g.drawLine(x, y, x, y ) ; return true;5、AWT 中文本字串的显示(1)方法应调用Graphics 类中相应的输出函数:g.drawString(“待输出的文字串”,x, y); 注意:其中的X,Y是指定文本的左下角的坐标值。程序例如下:public void paint(Graphics g) Font myFont= new Font(Dialog, Font.BOLD, 20); g.setFont(myFont); g.draw

8、String(这是Java中的Dialog字体的文字串, 100,100) ;(2)文字的颜色和字体编程颜色:利用Color类创建出一Color类对象并设置颜色特征 参数(r、g、b 三基色的分量);调用Graphics类中的setColor()将用户的颜色加入到系统中;再调用绘制函数输出图形、文字等。字体:利用Font类创建出一Font类对象并设置字体特性参数;调用Graphics类中的setFont()将用户字体加入到系统中;再调用绘制函数输出文字(也可以设置按钮等基本控件的字体 ,如:OK.setFont())实例程序public void paint(Graphics g) Color

9、 myColor= new Color(255, 0, 0); g.setColor(myColor);Font myFont= new Font(Dialog, Font.BOLD, 20); g.setFont(myFont); g.drawString(这是Java中的Dialog字体的文字串, 100,100) ;6、AWT 中的图形编程 (1)图形函数 Graphics 类中的图形函数主要可以分为如下几种:跟踪形状轮廓的绘制方法(点、线和面),填充形状轮廓的绘制方法,其它杂项方法。(2)应用实例实例一:设计一个画直方图的Java Applet程序import java.applet.

10、*;import java.awt.*;public class LifeCycle extends Applet public void paint(Graphics g) g.drawLine(20,200,300,200); /画出X坐标轴 g.drawLine(20,200,20,20); /画出Y坐标轴 g.drawLine(20,170,15,170); g.drawLine(20,140,15,140); /画出Y坐标轴上的数据的各个刻度线,共5条 g.drawLine(20,110,15,110); g.drawLine(20,80,15,80); g.drawLine(20,

11、50,15,50); g.drawString(Init(),25,213); /在X坐标轴上显示出各个名称的文字 g.drawString(Start(),75,213); g.drawString(Stop(),125,213); g.drawString(Destroy(),175,213); g.drawString(Paint(),235,213); g.fillRect(25,200-InitCnt*30,40, InitCnt*30); /画填充矩形作为直方条,但放大30倍 g.fillRect(75,200-StartCnt*30,40, StartCnt*30); g.fil

12、lRect(125,200-StopCnt*30,40, StopCnt*30); g.fillRect(175,200-DestroyCnt*30,40, DestroyCnt*30); g.fillRect(235,200-PaintCnt*30,40, PaintCnt*30); 实例二:设计一个自由笔(铅笔)以产生手画线的程序。public boolean mouseDrag(Event evt, int x, int y) Graphics g=getGraphics() ; /在鼠标的mouseDrag事件中画出鼠标的当前位置的点 g.setColor(Color.red) ; g

13、.drawLine(x, y, x, y ) ; return true;实例三:自定义出一个按纽效果的图形public void paint(Graphics g) g.setColor(Color.LIGHT_GRAY); g.fillRect(1,1,100-2,100-2); g.draw3DRect(0,0,100-1,100-1,true); g.setColor(this.getForeground(); g.drawRect(2,2,100-4,100-4); 实例四:画各种形式的圆弧public void paint(Graphics g)/在原点为(10,40),半径为70

14、,起始角度为0度,逆时针转90度的圆弧g.drawArc(10,40,70,70,0,90);/在原点为(100,40),半径为70,起始角度为0度,逆时针转90度的圆弧g.fillArc(100,40,70,70,0,90); /在原点为(10,100),长轴为80,短轴为70,起始角度为0度,顺时针转90度的弧g.drawArc(10,100,70,80,0,-90);/在原点为(100,100),长轴为80,短轴为70,起始角度为0度,顺时针转90度的填充弧g.fillArc(100,100,70,80,0,-90); 实例五:画多边形public void paint(Graphics

15、 g) int xArr = 78,188,194,284,106,116,52 ; int yArr = 66,148,72,140,216,160,212 ; int numPoints=xArr.length; /获得x,y坐标对数组的长度 g.drawPolygon( xArr, yArr, numPoints);7、AWT 中的图像编程(1)文件格式:支持*.gif、*.jpeg、*.Png等(2)加载图像的方法Applet中加载图像:直接调用getImage(),如:Image myImage = getImage(URL address, imageFileName);Application中加载图像:利用Toolkit 类中的getImage(),如:Image myImage =Toolkit .getDefaultToolkit(). g

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1