第19章绘图——窗框与画布.ppt
《第19章绘图——窗框与画布.ppt》由会员分享,可在线阅读,更多相关《第19章绘图——窗框与画布.ppt(30页珍藏版)》请在三一文库上搜索。
1、第19章 绘图窗框与画布,能力目标: 掌握Graphics类的绘图、绘文字方法,并能选取不同的颜色和字体进行绘制。 能在窗框和画布上绘制图形和图像。 能编写手工绘制直线段、矩形、圆和椭圆的应用程序。,内容介绍,19.1 任务预览 19.2 窗框绘图 19.3 颜色与字体 19.4 Canvas画布绘图 19.5 光标类Cursor 19.6 本章小结 19.7 实训19:绘制图形,19.1 任务预览,本章实训程序运行结果:,19.2 窗框绘图,【例19-1】编程:使用窗框绘制太极图和图像文件。 分析:线框状太极图由5部分组成:一个大圆、内部上下平滑连接的两个半圆、还有两个小圆,其中下面的小圆为
2、实心的(填充的)。设大圆的直径为2r,则两个半圆的直径为r,小圆的直径为r/4。 import javax.swing.*; import java.awt.*; class Frame1 extends JFrame Image img = this.getToolkit(). createImage(“cock.jpg“); public Frame1() this.setTitle(“绘制图形图像“); this.setBounds(100, 100, 350, 200); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this
3、.setVisible(true); ,public void paint(Graphics g) /绘制方法 int width = this.getWidth(); /窗框宽度 int height = this.getHeight(); /窗框高度 int r = (height-50)/2; /太极图半径 g.setColor(Color.WHITE); /设置画笔为白色 g.fillRect(0, 0, width, height); /填充矩形界面(白底色) /绘制线框状太极图: g.setColor(Color.BLACK); g.drawOval(10, 40, 2*r, 2*
4、r); /太极图外圆 g.drawArc(10+ r/2, 40, r, r, 90, 180); /上部半圆(弧) /画弧方法后2个参数:弧起始角、弧度 g.drawArc(10+r/2, 40+r, r, r, -90, 180); /下部半圆(弧) g.drawOval(10+(7*r)/8, 40+3*r/8, r/4, r/4); /上部小圆 g.fillOval(10+(7*r)/8, 40+11*r/8, r/4, r/4); /下部实心小圆 g.drawImage(img, 40+2*r, 40, 2*r, 2*r, this); /绘图像 public class Examp
5、le1 /主类,修改例19-1,绘制黑白型太极图,需改代码: /绘制黑白填充型太极图: g.setColor(Color.BLACK); /设置画笔为黑色 g.drawArc(10, 40, 2*r, 2*r, 90, 180); /左半圆 g.fillArc(10, 40, 2*r, 2*r, -90, 180); /右半黑圆 g.fillOval(10+r/2, 40, r, r); /上半黑圆 g.setColor(Color.WHITE); /设置画笔为白色 g.fillOval(10+r/2, 40+r, r, r); /下部白圆 g.fillOval(10+(7*r)/8, 40+
6、3*r/8, r/4, r/4); /上部小白圆 g.setColor(Color.BLACK); /设置黑色 g.fillOval(10+(7*r)/8, 40+11*r/8, r/4, r/4); /下部小黑圆,19.2.1 图形上下文类Graphics,Graphics类是图形上下文(环境)抽象基类。 Graphics对象封装了绘制颜色、字体、坐标系等信息,可简单地理解为一支“画笔”。 Graphics类部分方法介绍如下: (1)void setColor(Color c):设置“画笔”颜色。 (2)Color getColor() (3)void drawLine(int x1, in
7、t y1, int x2, int y2) (4)void drawRect(int x, int y, int width, int height) (5)void fillRect(int x, int y, int width, int height) (6)void drawOval(int x, int y, int width, int height):绘制椭圆框。如果宽、高相等,则变成一个圆。如: g.drawOval(10, 40, 2*r, 2*r); /太极图外圆 (7)void fillOval(int x, int y, int width, int height):绘
8、填充椭圆。 如绘制太极图下部实心小圆: g.fillOval(10+(7*r)/8, 40+11*r/8, r/4, r/4);,(8)void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle):绘制外接指定矩形的椭圆弧。最后2个参数是弧的起始角和跨越的角度(即弧度)。如: g.drawArc(10+ r/2, 40, r, r, 90, 180); /太极图上部半圆(弧) g.drawArc(10+r/2, 40+r, r, r, -90, 180); /太极图下部半圆(弧) (9)void
9、fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) (10)void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) (11)void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) (12)void drawPolygon(int xPoints, int yPoints,
10、int nPoints) (13)void fillPolygon(int xPoints, int yPoints, int nPoints) (14)void setFont(Font font) (15)Font getFont() (16)void drawString(String str, int x, int y) 关于Graphics类的drawImage方法,详见18章18.6节。,19.2.2 工具包类Toolkit,例19-1程序由图像文件创建图像对象时,使用窗框的getToolkit方法,方法返回Toolkit(工具包)类的对象,然后再调用createImage方法创建
11、图像对象。 抽象类Toolkit位于java.awt包,关于构建图像的方法: (1)Image createImage(String filename) (2)Image createImage(URL url) (3)Image getImage(String filename) (4)Image getImage(URL url) (5)static Toolkit getDefaultToolkit():获取默认的工具包。 创建图像对象也可调用方法(5)和(2)实现,如: Image img = Toolkit.getDefaultToolkit().createImage(“cock.
12、jpg“);,19.2.3 在窗框中手动绘图,【例19-2】编写在窗框中手动绘图程序。 import javax.swing.*; import java.awt.*; import java.awt.event.*; class Frame2 extends JFrame public Frame2() this.setTitle(“手动绘制直线“); this.setBounds(100, 100, 200, 200); this.setDefaultCloseOperation(); this.addMouseListener(new MouseHandler(); this.setVi
13、sible(true); ,/鼠标事件监听处理类(窗框内部类):拖动鼠标绘直线 class MouseHandler extends MouseAdapter int x1, y1, x2, y2; public void mousePressed(MouseEvent e) x1 = e.getX(); y1 = e.getY(); public void mouseReleased(MouseEvent e) x2 = e.getX(); y2 = e.getY(); Graphics g = getGraphics(); g.drawLine(x1, y1, x2, y2); /绘直线
14、public void paint(Graphics g) g.setColor(Color.WHITE); g.fillRect(0, 0, this.getWidth(), this.getHeight(); /白底 public class Example2 public static void main(String args) new Frame2(); ,在任意对角方向拖动鼠标都能绘制矩形。 把例19-2中的MouseHandler内部类中的mouseReleased方法修改为如下代码: public void mouseReleased(MouseEvent e) x2 = e.
15、getX(); y2 = e.getY(); Graphics g = getGraphics(); int x, y, width, height; x = x1x2 ? x1 : x2; /左上角x坐标是两点中最小的 y = y1y2 ? y1 : y2; /左上角y坐标是两点中最小的 width = Math.abs(x2 - x1) + 1; /矩形宽度 height = Math.abs(y2 - y1) + 1; /矩形高度 g.drawRect(x, y, width, height); /绘制矩形 ,修改例19-2绘圆,基于圆心、半径方式绘圆,再次修改例19-2程序,更改Mou
16、seHandler内部类的鼠标按下和鼠标释放方法: public void mousePressed(MouseEvent e) x1 = e.getX(); y1 = e.getY(); Graphics g = getGraphics(); g.drawOval(x1, y1, 1, 1); /画圆心 public void mouseReleased(MouseEvent e) x2 = e.getX(); y2 = e.getY(); Graphics g = getGraphics(); int dx = x2-x1; int dy = y2-y1; int r =(int)Math
17、.sqrt(dx*dx + dy*dy); /计算圆的半径 g.drawOval(x1-r, y1-r, 2*r, 2*r); /画圆 g.setColor(Color.LIGHT_GRAY); /设置亮灰色 g.drawLine(x1, y1, x2, y2); /画半径 ,19.3 颜色与字体,图形上下文类与颜色有关的方法是:setColor、getColor。 一般组件也有设置、获取前景色和背景色的方法:setForeground、getForeground、setBackground 和getBackground。 颜色类Color的常用构造方法: (1)Color(int red,
18、int green, int blue):所合成的颜色数多达16兆多(256256256),号称真彩色。 (2)Color(int red, int green, int blue, int alpha):其中alpha定义颜色透明度,0意味完全透明,255则不透明。 常用颜色还可用静态常量表示。如:红色 Color.RED,当然也可用 new Color(255, 0, 0)构建。,19.3.1 颜色类Color,Color类颜色常量,19.3.2 颜色选择器类JColorChooser,javax.swing包的JColorChooser类提供了一个颜色选择器,允许用户选择各种颜色。该类最
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 19 绘图 窗框 画布
链接地址:https://www.31doc.com/p-3470700.html