Java2D图形绘制

图形处理类

J2SE提供了一组应用程序接口(API),用于处理2D图形,主要功能以下:java

(1)绘制和填充简单及复杂的形状app

(2)裁剪、合成图形及透明度框架

(3)对图形进行各类几何变换字体

(4)对高级字体进行处理并对字符串进行格式化this

Java2D API中对图形处理的类:spa

1.Graphics类code

2.Graphics2D类orm

3.Shape类(抽象类)对象

绘制几何图形 - 线段blog

Java2D支持对图形的绘制,包括绘制线段,矩形,椭圆,多边形等几何形状。使用Java2D API进行图形绘制的主要步骤以下。

(1)创建应用程序主类。

(2)生成Frame对象和Panel对象,并将Panel对象添加到Frame对象中。

(3)重载Panel对象中的paint()方法,在其中添加绘制图形的代码。

(4)在mian()方法中对应用程序主类进行实例化。

如下代码用于创建图形绘制的基本框架

//创建图形绘制程序框架
import java.awt.*;
import javax.swing.*;
class MyPanel extends JPanel{					//定义绘图类MyPanle
	public void paint(Graphics g) {				//重载paint()方法
		
	}
}
public class DrawFrame extends JFrame {			//定义主类继承JFrame
	public DrawFrame(){
		MyPanel mp = new MyPanel();
		this.add(mp);						//将MyPanel对象添加到JFrame里面
		this.setTitle("my app");				//设置标题
		this.setSize(400, 400);					//设置大小
		this.setLocation(400, 400);				//设置位置
		this.setVisible(true);					//用于显示主界面
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	//关闭

	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new DrawFrame();						//对主程序进行实例化
	}
}

Java2D API提供的图形绘制方法具体可分为两类:

一是经过图形对象直接绘制,

二是经过Graphics2D对象进行间接绘制。

前者比较简洁,后者须要先生成一个Shape对象,而后对其绘制。

1.使用图形对象绘图的步骤

(1)获取Graphics对象

(2)设置绘图效果(颜色,边框等)

(3)调用Graphics的绘图方法

程序以下:

public void paint(Graphics g){//重载paint()方法
		// 1.使用图形
		g.setColor(Color.BLUE); //设置颜色
		g.drawLine(2,2,300,260); //调用图形的线段绘制方法从(2,2)到(300260)
}

2.使用Graphics2D的对象绘制一条线段

(1)获取的的的的的Graphics2D的对象

(2)创建几何图形对象(须要导入的java.awt.geom包,包中定义了各类Shape对象)

(3)设置绘图效果(颜色,边框等)

(4)调用Graphics2D的draw()方法

程序以下:

public void paint(Graphics g){//重载paint()方法
		// 2.使用的Graphics2D 
		Point2D p1 =新的Point2D.Double(50,50); //起点(50,50)
		Point2D p2 = new Point2D.Double(200,200); //终点(200,200)
		Line2D line = new Line2D.Double(p1,p2); 
		Graphics2D g1 =(Graphics2D)g; //获取Graphics2D的对象
		g1.setColor(Color.BLUE); //设置颜色
		g1.draw(线); //调用的Graphics2D的绘图方法
}

填充图形

Java2D图形填充的方式与图形绘制的方式类型,也能够经过Graphics对象或Graphics2D对象完成。

1.使用Graphics对象填充图形的步骤:

(1)得到Graphics对象

(2)设置填充效果

(3)调用Graphics的填充方法

程序以下:

public void paint(Graphics g){ 
			g.setColor(Color.BLUE);         //设置填充颜色
			g.fillRect(20,30,300,220);    //调用图形的矩形填充方法
}

2.使用Graphics2D对象填充图形的步骤:

(1)得到Graphics2D对象

(2)创建几何图形对象

(3)设置填充效果

(4)调用Graphics2D的fill()方法

使用Graphics2D进行图形填充时不只能使用单色填充,并且能够实现颜色渐变的填充效果,这须要借助GradientPaint对象实现。

代码以下:

public void paint(Graphics g){//重载paint()方法
		//颜色渐变
		Rectangle2D rec = new Rectangle2D.Double(20,40,300,220);  //创建矩形对象
		Graphics2D g2 =(Graphics2D)g;                             //获取的Graphics2D对象
		GradientPaint blueToRed = new GradientPaint(0,0,Color.BLUE,200,150,Color.RED); 
		g2.setPaint(blueToRed); //设置渐变填充对象
		g2.fill(REC); //调用的的的的Graphics2D的填充方法
}    

    图形变换

Java2D API中提供了图形的几何变换功能,这主要是经过AffineTransform类实现的。该类描述了一种二维仿射变换的功能,他是一种二维坐标到二维坐标之间的线性转换,保持二维图形的“平直性”和“平行性”。仿射变换能够经过一系列发原子变换的复合来实现,包括平移(Translation)、缩放(Scale)、翻转(Filp)、旋转(Rotation)和错切(Shear)。

实现步骤:

(1)创建AffineTransform对象

(2)设置变换过程

(3)在Graphics2D对象上应用变换

(4)调用Graphics2D对象的draw()方法绘制图形

代码以下:

public void paint(Graphics g) {				//重载paint()方法
		//经过AffineTransform对象实现各类变换效果
		Rectangle2D rec = new Rectangle2D.Double(10,10,30,30);
		Graphics2D g3 = (Graphics2D)g;
		AffineTransform at = new AffineTransform();		//创建图形变换对象
		at.setToTranslation(50, 50);					//设置平移变换
		at.rotate(Math.PI/8.0);							//设置旋转变换
		at.setToShear(2.0, 2.0);						//设置错切变换
		at.scale(2.0, 2.0);								//设置缩放变换
		g3.setTransform(at);							//在Graphics2D对象上应用变换
		g3.setColor(Color.BLUE);
		g3.draw(rec);
	}

运行效果: