第九章 Java的绘图功能

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

pa.lineTo(50,50);
pa.closePath();
举例(Draw2DDemo.java)
9.3.2 绘图效果
绘图效果的实现主要包括图形着色处理和笔划处理两部分 内容。 1. 着色处理 Graphice2D的setPaint()方法可以定义一个填充模式,它 带有Paint对象作为它的参数,该对象的类用于实现Paint接口。 在Java 2D API中有3个类分别用于对图形进行单色着色、梯度 着色和纹理着色。 第一个是Color类,它用来实现Paint接口。若用单色填充图 形,只需用一个Color对象调用setPaint()方法即可。如:
其中最后一个参数指明了圆弧如何结束,有三种取值:
Arc2D.OPEN:弧不封闭 Arc2D.CHORD:有一条线段连接弧的两个端点
Arc2D.PIE:弧与椭圆的中心连接起来,像一个扇形。
6. 画二次曲线
Java使用QuadCurve2D类的两个子类QuadCurve2D.Float、 QuadCurve2D.Double来创建二次曲线。二次曲线由两个端点和一个控制点定 义。移动控制点,可改变曲线的形状。如: QuadCurve2D.Float qu=new QuadCurve2D.Float(50F,50F,10F,10F,50F,100F); g2.draw(qu); 使用端点(50,50)和(50,100)及控制点(10,10)定义了一条二次曲线。
g2.draw(re);
4. 画椭圆
Java使用Ellipse2D类的两个子类Ellipse2D.Float、 Ellipse2D.Double来创 建椭圆。如: Ellipse2D.Float el=new Ellipse2D.Float(10F,20F,50F,60F);
g2.draw(el);
g2.setPaint(redtoblack);
第三个是TexturePaint类,它允许用户使用一幅图像来填充图 形,即对图形进行纹理着色。用户提供一个用作填充图案的 BufferImage对象后,就可用该对象来填充图形。其构造方法如下:
public TexturePaint(BufferImage pattern,Rectangle2D rec2D);
3. 画圆角矩形
Java使用RoundRectangle2D抽象类的两个子类RoundRectangle2D.Float、 RoundRectangle2D .Double来创建圆角矩形。如: RoundRectangle2D.Float re=new
RoundRectangle2D.Float(10F,10F,50F,60F,10F,10F);
9.3 绘制2D图形
要绘制高质量的图形,可使用Java2中提供的Java2D类库,所 有的Java2D图形操作必须在Graphics2D对象上调用,Graphics2D 类是Graphics类的一个子类,可将Graphics对象强制转换为 Graphics2D对象。 9.3.1 基本形状的绘制
基本图形包括点、线、矩形、圆等,是构成复杂图形的基础。 Java2D使用java.awt.geom包中不同的类代表直线、矩形、椭圆等, 如Line2D、Rectangle2D、Ellipse2D等,这些类都实现了shape接口。 绘制图形,首先要建立一个实现shape接口的对象,然后调用 Graphics2D类的draw()方法绘制图形或fill()方法填充图形。 Java2D库为每一个形体类提供了两个版本:一个使用float坐 标,另一个使用double坐标。
第九章 Java的绘图功能
9.1 绘图的基本方法 9.2 绘制基本图形 9.3 绘制2D图形 9.4 文字输出 9.5 图像处理 9.6 动画处理
9.1 绘图的基本方法
Java的图形处理主要由AWT提供的Graphics类来实现。利用 Graphics类的各种方法可以绘制简单的图形和输出文本。 Component 类提供了几种有关绘图的方法,主要是 paint() 、 update()和repaint()。 public void paint(Graphics g) :提供了绘图的基本操作。 public void update(Graphics g):更新图形,它首先清除背景, 然后设置前景,再调用paint()完成组件的具体绘图。 repaint() 方法重绘图形,当组件外形发生变化,即大小改变 或位置移动时, repaint()立即被系统调用,实现对组件的更新。 public void repaint() public void repaint (long tm) :在tm毫秒内运行repaint public void repaint(int x,int y,int width,int height) 重绘某区域
7. 画三次曲线
Java使用CubicCurve2D类的两个子类CubicCurve2D.Float、 CubicCurve2D.Double来创建三次曲线。三次曲线由两个端点和两个控制点定 义。移动控制点,可改变曲线的形状。如: CubicCurve2D.Float cu=new CubicCurve2D.Float(50F,50F,10F,10F,100F,100F,50F,100F); g2.draw(cu);
表示颜色color1从点(x1,y1)出发到达点(x2,y2)变成color2。若 cyclic为false,表示非循环变换,颜色渐变到终点时颜色值停留在 终点颜色上。yyclic为true表示颜色循环变幻,填充颜色在到达终 点后变回起点颜色。如:
GradientPaint redtoblack=new GradientPaint(20,20,Color.red,50,50,Color.black,false);
ห้องสมุดไป่ตู้
1. 画直线
Java使用Line2D.Float类来创建一条直线。如: Line2D.Float line1=new Line2D.Float(10F,10F,20F,20F); g2.draw(line1);
2. 画矩形
Java使用Rectangle2D抽象类的两个子类Rectangle2D.Float、 Rectangle2D .Double来创建矩形。如: Rectangle2D.Float re=new Rectangle2D.Float(10F,10F,50F,60F); g2.draw(re);
绘制矩形,其中(x,y)为矩形的左上角坐标,width和height分别为矩 形的宽和高。 void fillRect (int x,int y,int width,int height) 画出矩形框并且用前景色填充。 void drawRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight) 绘制带圆角的矩形,arcWidth和arcHeight分别为圆角的宽度和高度。 void fillRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight) 画出带圆角的矩形框并且用前景色填充。 举例(RectDemo.java)
其中(x1,y1)为起点坐标,(x2,y2)为终点坐标。 Java定义的一个窗口工作区是以整个屏幕的左上角为坐标原 点(0,0),以像素为单位,顺序向右和向下延伸。 举例(DrawLine.java)
9.2 绘制基本图形
9.2.2 绘制矩形
void drawRect(int x,int y,int width,int height)
其中pattern指明用来填充的图案,rec2D指明图案的大小。
9.2 绘制基本图形
9.2.4 绘制圆弧
void drawArc(int x,int y,int width,int height,int startAngle,int arcAngle) 绘制圆弧,其中(x,y)指定了弧线所在圆的左上角的坐标, width和height分别为圆弧的宽和高,startAngle为圆弧的起始 角度, arcAngle为圆弧的角度(张角),取正(负)值为沿逆 (顺)时针方向。当张角的取值大于360°时,就是椭圆。 void fillArc(int x,int y,int width,int height ,int startAngle,int arcAngle)
9.2 绘制基本图形
9.2.3 绘制椭圆
void drawOval(int x,int y,int width,int height)
绘制椭圆,其中(x,y)指定了椭圆的位置,即包围椭圆的 矩形的左上角坐标,width和height分别为椭圆的宽和高。当椭 圆的宽和高相同时,即为圆形。 void fillOval (int x,int y,int width,int height) 画出椭圆并且用前景色填充。 举例(OvalDemo.java)
使用端点(50,50)和(50,100)及控制点(10,10),(100,100)定义了一条三次曲 线。
8. 画多边形
Java使用GeneralPath类创建多边形,可利用GeneralPath 的方法moveTo() 和lineTo()定义多边形的第一个点和创建以一个新点作为终点的边。最后调用 closePath()方法关闭多边形。如用来创建一个三角形的程序代码如下: GeneralPath pa=new GeneralPath(); pa.moveTo(0,50); pa.lineTo(25,0);
5. 画圆弧
Java使用Arc2D类的两个子类Arc2D.Float、 Arc2D.Double来创建圆弧。 如: Arc2D.Float ar=new Arc2D.Float(10F,20F,50F,60F,30F,60F,Arc2D.CHORD);
g2.draw(ar);
该语句在(10,20)处创建一段圆弧,其宽度和高度分别为50和60个像素, 弧的起始弧度为30°,逆时针转过60°后,用一条线段连接弧的两个端点。
绘制多边形,其中(xPoints[i],yPoints[i])为该多边形 的各个顶点的坐标, nPoints 为多边形的顶点个数。
void fillPolygon(int[] xPoints,int[] yPoints,int nPoints)
绘制多边形并且用前景色填充。 void drawPolyline(int[] xPoints,int[] yPoints,int nPoints) 绘制折线, (xPoints[i],yPoints[i]) 为依次连接的各 个点的坐标。 举例(PolyDemo.java)
设置颜色
setColor(Color c):设置绘图颜色 setXORColor(Color xcolor):设置异或绘图模式,两个图形重叠 部分的颜色为两个图形的颜色和xcolor异或的结果。 setPaintMode():恢复默认覆盖方式。
9.2 绘制基本图形
9.2.1 绘制直线
void drawLine(int x1,int y1,int x2,int y2)
setPaint(Color.red);//用红色填充图形
第二个是GradientPaint类,它可以定义一个渐变的颜色对 象,即对图形进行梯度着色。
GradientPaint类的构造方法如下:
GradientPaint(float x1,float x2,Color color1,float x2,float y2,Color color2,boolean cyclic);
画出圆弧并且用前景色填充得到一个扇形。以时钟3点钟 方向为基准0度。逆时针为正,顺时针为负。arcAngle表示从 startAngle开始跨过的角度。 举例(ArcDemo.java)
9.2 绘制基本图形
9.2.5 绘制多边形
void drawPolygon(int[] xPoints,int[] yPoints,int nPoints)
相关文档
最新文档