分享
分销 收藏 举报 申诉 / 29
播放页_导航下方通栏广告

类型第一讲Java画图机制.ppt

  • 上传人:精****
  • 文档编号:5473046
  • 上传时间:2024-11-10
  • 格式:PPT
  • 页数:29
  • 大小:285.50KB
  • 下载积分:10 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    第一 Java 画图 机制
    资源描述:
    1Java画图机制画图机制2 介绍介绍Java画图的方法与技术,具体包括画图的方法与技术,具体包括Java画画图基础知识;重点介绍使用图基础知识;重点介绍使用Java语言进行二维图形的语言进行二维图形的绘制,包括椭圆、矩形、多边形和线段等图形。绘制,包括椭圆、矩形、多边形和线段等图形。p Java画图基础p 事件机制和画图机制p 线程机制和画图机制p 本讲重点:本讲重点:掌握Java画图机制基本概念与应用 本讲概要本讲概要例例1 一个简单的一个简单的awt窗体代码窗体代码 import java.awt.*;public class MyCanvas_1 extends Frame/无参的构造方法 public MyCanvas_1()public static void main(String args)MyCanvas_1 frm=new MyCanvas_1();frm.setSize(600,400);frm.setVisible(true);例例2 在窗体中绘图在窗体中绘图画出一个矩形画出一个矩形import java.awt.*;public class MyCanvas_2 extends Frame/具体的画图方法,覆盖了父类中的同名方法 public void paint(Graphics g)/对象g相当于画笔 /画图的默认颜色是黑色 /drawRect()是对象g的成员方法,绘制一个矩形 /矩形的左上角坐标是(100,150)/宽300,高200 /原点位于窗口的左上角 g.drawRect(100,150,300,200);public static void main(String args)MyCanvas_2 frm=new MyCanvas_2();frm.setSize(600,400);frm.setVisible(true);结果分析结果分析坐标(100,150)原点坐标宽300高200关于关于paint()paint()方法方法o paint()方法的调用是由系统自动完成了方法的调用是由系统自动完成了。o 当当Frame窗体显示或被激活的时候,系统就窗体显示或被激活的时候,系统就自动调用该方法进行绘图自动调用该方法进行绘图。o 我们编程人员就不必关心我们编程人员就不必关心paint()方法调用的方法调用的细节问题细节问题。o专注于专注于paint()方法内部绘图逻辑的实现就可方法内部绘图逻辑的实现就可以了,这是面向对象的好处之一。以了,这是面向对象的好处之一。paint()的所在类的所在类Frame Window Container paint()npaint()方法存在于方法存在于Container类中类中nFrame多层继承了多层继承了Contianern自定义的自定义的paint()方法方法“覆盖了覆盖了”Contianer中的中的paint()方法方法npaint()方法由窗体自动调用方法由窗体自动调用例例3填充矩形填充矩形import java.awt.*;public class MyCanvas_3 extends Frame/具体的画图方法,覆盖了父类中的同名方法 public void paint(Graphics g)/对象g相当于画笔 /画图的默认颜色是黑色 /fillRect()是对象g的成员方法,填充一个矩形 /矩形的左上角坐标是(100,150)/宽300,高200 /原点位于窗口的左上角 g.fillRect(100,150,300,200);public static void main(String args)MyCanvas_3 frm=new MyCanvas_3();frm.setSize(600,400);frm.setVisible(true);改变画笔颜色改变画笔颜色 oGraphics类默认的画笔颜色是黑色,我们可以调用该类默认的画笔颜色是黑色,我们可以调用该类提供的方法改变画笔颜色,画出五颜六色的图像,改类提供的方法改变画笔颜色,画出五颜六色的图像,改变画笔颜色的方法是变画笔颜色的方法是setColor()方法,该方法的格式如方法,该方法的格式如下所示:下所示:opublic void setColor(java.awt.Color color);o该方法只有一个参数,参数类型是该方法只有一个参数,参数类型是Color,Color是一是一个颜色类,通过个颜色类,通过RGP数值进行定义,当然对于常用的一数值进行定义,当然对于常用的一些颜色如红黄蓝等等,些颜色如红黄蓝等等,Color提供了一些静态对象与之提供了一些静态对象与之对应:对应:nColor.RED:红色对象:红色对象nColor.BLUE:蓝色对象:蓝色对象nColor.YELLOW:黄色对象:黄色对象nColor.BLACK:黑色对象:黑色对象n.例例4改变画笔颜色的代码改变画笔颜色的代码import java.awt.*;public class MyCanvas_4 extends Frame/具体的画图方法,覆盖了父类中的同名方法 public void paint(Graphics g)/设置画笔颜色为蓝色 g.setColor(Color.blue);/填充一个矩形 g.fillRect(100,150,300,200);/设置画笔颜色为红色 g.setColor(Color.red);/绘制矩形边框 g.drawRect(100,150,300,200);public static void main(String args)MyCanvas_4 frm=new MyCanvas_4();frm.setSize(600,400);frm.setVisible(true);绘制椭圆形和圆形绘制椭圆形和圆形 o画矩形和填充矩形的方法分别是画矩形和填充矩形的方法分别是drawRect()和和fillRect()o画椭圆形和填充椭圆形的方法分别是画椭圆形和填充椭圆形的方法分别是drawOval()和和fillOval()n其中其中Oval表示椭圆表示椭圆n圆形可以看成是短轴和长轴相等的特殊椭圆形。圆形可以看成是短轴和长轴相等的特殊椭圆形。ndrawOval()和和fillOval()都是都是Graphics类的成员类的成员方法,两个方法的格式如下所示:方法,两个方法的格式如下所示:npublic void drawOval(int x,int y,int width,int height);npublic void fillOval(int x,int y,int width,int height);n其中其中(x,y)表示椭圆外接矩形的左上角坐标,表示椭圆外接矩形的左上角坐标,width和和height分别表示外接矩形的宽和高分别表示外接矩形的宽和高 例例5绘制矩形和椭圆绘制矩形和椭圆 import java.awt.*;public class MyCanvas_5 extends Frame/具体的画图方法,覆盖了父类中的同名方法 public void paint(Graphics g)/设置画笔颜色为红色 g.setColor(Color.red);/绘制一个矩形边框 g.drawRect(100,150,300,200);/设置画笔颜色为蓝色 g.setColor(Color.blue);/绘制一个椭圆 g.drawOval(100,150,300,200);public static void main(String args)MyCanvas_5 frm=new MyCanvas_5();frm.setSize(600,400);frm.setVisible(true);运行效果运行效果(内接圆和外接矩形内接圆和外接矩形)绘制线段绘制线段 o绘制线段的方法是drawLine()方法,线段不能填充,因此没有对应的fillLine()方法。drawLine()方法的定义如下所示:npublic void drawLine(int x1,int y1,int x2,int y2);n其中(x1,y1)、(x2,y2)分别对应线段的两个端点,画笔颜色对线段的绘制也起作用 例例6绘制线段绘制线段import java.awt.*;public class MyCanvas_6 extends Frame/具体的画图方法,覆盖了父类中的同名方法 public void paint(Graphics g)g.setColor(Color.red);g.drawLine(100,100,200,200);public static void main(String args)MyCanvas_6 frm=new MyCanvas_6();frm.setSize(600,400);frm.setVisible(true);绘制三角形和多边形绘制三角形和多边形 o绘制多边形和填充多边形的方法分别是drawPolygon()方法和fillPolygon()方法,其中英文单词Polygon的意思是多边形的意思。两个方法的定义如下所示:npublic void drawPolygon(int xs,int ys,int lineNumber);npublic void fillPolygon(int xs,int ys,int lineNumber);n方法有三个参数,其中xs和ys是两个整型数组,分别表示多边形所有点的x轴坐标和y轴坐标,xs的元素和ys的元素一一对应,比如xs0和ys0对应,xsi和ysi对应;第三个参数lineNumber表示多边形点的数量。三角形是一个特殊的多边形。例例7绘制三角形和多边形绘制三角形和多边形import java.awt.*;public class MyCanvas_7 extends Frame/具体的画图方法,覆盖了父类中的同名方法 public void paint(Graphics g)g.setColor(Color.blue);int xs=60,150,170;int ys=60,50,150;g.drawPolygon(xs,ys,3);g.setColor(Color.red);int xs2=200,300,350,300,200;int ys2=200,200,250,300,240;g.fillPolygon(xs2,ys2,5);public static void main(String args)MyCanvas_7 frm=new MyCanvas_7();frm.setSize(600,400);frm.setVisible(true);Java画图与事件机制画图与事件机制 o而从游戏的角度出发,绘制静态图形不是我们的最终目的,游戏的一个特点是交互性很强,玩家可以通过操作鼠标或键盘控制图形的变化(图形移动、图形变形等等),以此来表达游戏逻辑和游戏可玩性。而Java语言对于鼠标、键盘等外设的控制是通过事件机制实现的 例例8控制图形移动控制图形移动package demo;import java.awt.*;public class MyCanvas_8 extends Frame/定义变量x和y,为矩形的左上角坐标 int x=100,y=100;public void paint(Graphics g)/设置颜色为蓝色 g.setColor(Color.blue);/用x和y的值来指定矩形左上角坐标 g.fillRect(x,y,50,50);public static void main(String args)MyCanvas_8 mc=new MyCanvas_8();mc.setSize(600,400);mc.show();思考思考 o这段代码改动不大,仅仅定义了变量这段代码改动不大,仅仅定义了变量x和和y,作为矩形的左上角坐标。现在可以思考一下,作为矩形的左上角坐标。现在可以思考一下,如果在程序运行过程中动态的改变如果在程序运行过程中动态的改变x和和y的的值,是不是可以改变矩形的位置?值,是不是可以改变矩形的位置?例例9使用事件机制控制移动使用事件机制控制移动package demo;import java.awt.*;import java.awt.event.*;public class MyCanvas_9 extends Frame public MyCanvas_9()class KeyEve implements KeyListener public void keyTyped(KeyEvent e)/通过e.getKeyChar();得到当前的按键 char key=e.getKeyChar();if(key=a)x-;/向左移动 else if(key=d)x+;/向右移动 else if(key=w)y-;/向上移动 else if(key=s)y+;/向下移动 /x和y变动以后,重新绘制窗体 repaint();public void keyPressed(KeyEvent e)public void keyReleased(KeyEvent e)addKeyListener(new KeyEve();例例9使用事件机制控制移动使用事件机制控制移动/定义变量x和y,为矩形的左上角坐标 int x=100,y=100;public void paint(Graphics g)/设置颜色为蓝色 g.setColor(Color.blue);/用x和y的值来指定矩形左上角坐标 g.fillRect(x,y,50,50);public static void main(String args)MyCanvas_9 mc=new MyCanvas_9();mc.setSize(600,400);mc.show();事件和画图小结事件和画图小结 o两者的共性如下:n把要变化的值设成一个变量n通过事件控制变量的变化n变量变化之后重绘窗体n我们只要遵循以上规则,就可以实现大部分我们想要的功能。Java画图与线程机制画图与线程机制o使用线程机制控制图形变动与使用事件机制控制图形变动的方法大同小异,相同之处是都需要把变动的部分设定成变量,不同之处在于把由事件控制改为由线程控制,以下实现了矩形的自动移动。例例10用线程控制图形移动用线程控制图形移动package demo;import java.awt.*;import java.awt.event.*;public class MyCanvas_10 extends Frame public MyCanvas_10()class Th extends Thread public void run()while(true)/每隔100毫秒执行一次 x+;repaint();try /线程休眠100毫秒 Thread.sleep(100);catch(Exception e)Th t=new Th();t.start();/定义变量x和y,为矩形的左上角坐标 int x=100,y=100;public void paint(Graphics g)/设置颜色为蓝色 g.setColor(Color.blue);/用x和y的值来指定矩形左上角坐标 g.fillRect(x,y,50,50);public static void main(String args)MyCanvas_10 mc=new MyCanvas_10();mc.setSize(600,400);mc.show();例例10用线程控制图形移动用线程控制图形移动分析分析o线程每100毫秒执行一次,每次执行的时候把矩形的X轴坐标加1,然后重绘图形,得到的效果是矩形持续不断地向前移动。o这段代码当中,矩形仅仅可以向右移动,而我们无法控制方向o如果把事件机制也加入,那么就可以用键盘控制矩形移动的方向,而线程负责矩形根据设定的方向前移 谢谢谢谢!
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:第一讲Java画图机制.ppt
    链接地址:https://www.zixin.com.cn/doc/5473046.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork