




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、,第14章,绘图程序设计,2020/8/11,2,通过本章的学习,主要掌握以下知识点: 绘图类 三个重要的绘图方法 绘图程序设计 本章的重点: 掌握三个绘图方法 本章的难点: 绘图程序设计的技巧,2020/8/11,3,14.1 绘图类,2020/8/11,4,1图形显示 格式: public void paint(Graphics g) paint()是组件类的一个方法,参数是绘图类java.awt.Graphics的对象g。,2020/8/11,5,paint()方法在下列情况发生时会自动运行。 当新建窗口显示在显示器上或从隐藏变成显 示时; 从缩小图标还原之后; 正在改变窗口的大小时。,
2、2020/8/11,6,2更新图形 格式: public void update(Graphicsg),3重画图形 格式: public void repaint() public void repaint(int x,int y,int width,int height),2020/8/11,7,使用Graphics类必须依赖于某个组件。根据用户声明的类与组件类Component的关系划分,有两种绘图方式。,1)声明的类是组件类Component的子类,2)声明的类不是组件类Component的子类,2020/8/11,8,14.2 绘图程序设计,下面通过例子来说明绘图应用程序的设计方法,读
3、者可以通过分析实例来掌握绘图程序设计的技巧。 见教材【例14.1】【例14.3】,2020/8/11,9,【例14.1】在窗口中设置两个按钮,分别用于画圆或椭圆,并在绘图区域中显示字符串“画圆或椭圆”。 /app14_1.java 简单的绘图程序 import java.awt.*; import java.awt.event.*; public class app14_1 extends Frame implements ActionListener static app14_1 frm=new app14_1(); static Button bnt1 =new Button(“画圆”);
4、 static Button bnt2 =new Button(“画椭圆”); int circle=0;,2020/8/11,10,public static void main(String args) frm.setTitle(“简单绘图应用程序”); frm.setSize(300,250); frm.setLayout(null); bnt1.setBounds(90, 215,50,25); bnt2.setBounds(160,215,50,25); frm.add(bnt1); frm.add(bnt2); bnt1.addActionListener(frm); bnt2.a
5、ddActionListener(frm); frm.setVisible(true); public void actionPerformed(ActionEvente) Button bt=(Button)e.getSource(); /获取被按下的按钮 if (bt=bnt1) circle=1; /若按下的是“画圆”按钮 else circle=2; /若按下的是“画椭圆”按钮 Graphics g=getGraphics(); /获取窗口的绘图区 paint(g); ,2020/8/11,11,public void paint(Graphics g) g.setFont(new F
6、ont(“楷体”,Font.ITALIC,20); /设置字体 g.setColor(Color.red); /设置颜色 g.drawString(“画圆或椭圆”,120,50); /以(120.50)为左下角显示字符串 if (circle=1) g.drawOval (100,90,70,70); /画圆 else if (circle=2) g.drawOval (80,60,70,120); /画椭圆 ,2020/8/11,12,【例14.2】编制一个画图板程序,进行交互式作图。 /app14_2.java 手工绘画程序 import java.awt.*; import java.a
7、wt.event.*; public class app14_2 extends Frame implements MouseMotionListener static int x1,y1,x2,y2; public static void main(String args) app14_2 frm=new app14_2(); frm.setTitle(“交互式绘图”); frm.setBounds(10,10,250,200); frm.addMouseMotionListener(frm); /设置监听者 frm.addMouseListener(new MyMouseList(); /
8、设置监听者 frm.setVisible(true); ,2020/8/11,13,/定义静态内部类MyMouseList,并继承自MouseAdapter static class MyMouseList extends MouseAdapter public void mousePressed(MouseEvente) x1= e.getX(); /取得鼠标按下时的x坐标,作为起点的x坐标 y1= e.getY(); /取得鼠标按下时的y坐标,作为起点的y坐标 public void mouseDragged(MouseEvente) /用鼠标拖动事件源的处理操作 x2= e.getX()
9、; /取得拖动鼠标时的x坐标 y2= e.getY(); /取得拖动鼠标时的x坐标 Graphics g=getGraphics(); g.drawLine(x1,y1,x2,y2); /以(x1,y1)为起点,(x2,y2)为终点画线 x1=x2; /更新绘线起点的x坐标 y1=y2; /更新绘线起点的y坐标 public void mouseMoved(MouseEvente) ,2020/8/11,14,【例14.3】编制一个绘制椭圆的交互式程序,绘制椭圆时,其大小由鼠标拖动来完成。 /app14_3.java 用鼠标拖动来绘画椭圆 import java.awt.*; import j
10、ava.awt.event.*; public class app14_3 extends Frame implements MouseMotionListener, MouseListener static app14_3 frm=new app14_3(); int px1,py1,px2,py2,status=0; int rpx1,rpy1,rpx2,rpy2; public static void main(String args) frm.setTitle(“鼠标拖动画椭圆”); frm.setSize(250,230); frm.addMouseMotionListener(fr
11、m); /设置监听者 frm.addMouseListener(frm); /设置监听者 frm.setVisible(true); ,2020/8/11,15,public void mouseMoved(MouseEvente) px1=e.getX(); py1=e.getY(); status=0; public void mouseDragged(MouseEvente) /用鼠标拖动来画椭圆 Graphics g=getGraphics(); g.setColor(Color. yellow); /设置当前绘图颜色为黄色 g.setXORMode(Color.black); /设置
12、以异或模式作图 if (status=1) g.drawOval (px1,py1,px2,py2); /判断是否为新画的椭圆 else px1=e.getX(); py1=e.getY(); status=1; px2=Math.abs(e.getX()-px1); /计算长径 py2= Math.abs(e.getY()-py1); /计算宽径 g.drawOval (px1,py1,px2,py2); /画椭圆 rpx1=px1;rpy1=py1;rpx2=px2;rpy2=py2; /保存坐标位置 ,2020/8/11,16,public void mouseReleased(MouseEvent e) Graphics g=getGraphics(); g.setColor(Color.red); g.drawOval (r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 度企业定制礼品盒采购合同样本
- 电商广告投放服务合同样本
- 计算机一级练习题库含参考答案
- 植物学考试题(附参考答案)
- 农村宅基地转让合同范本
- 小学五年级数学上册口算能力竞赛测试题
- 度水电安装工程合同协议
- 7月物业分公司合同签订及执行情况报告
- 教育培训服务承包合同
- 机动车抵押借款合同范本
- GB/T 7702.15-2008煤质颗粒活性炭试验方法灰分的测定
- GB/T 25344-2010中华人民共和国铁路线路名称代码
- 部编版八年级语文下专题六古诗文默写与诗歌鉴赏课件
- 十二对脑神经的出入颅部位、分布、损伤表现汇总表
- 更换锅炉水冷壁管施工方案 勿删
- 石化公司成品油销售中心考核方案
- 机动车检测站车辆起火及应急疏散演练记录
- DB13(J)∕T 105-2017 预应力混凝土管桩基础技术规程
- 加压气化操作规程(共115页)
- 标准鲁班尺尺寸对比表
- PackingList外贸装箱单模板
评论
0/150
提交评论