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); }
运行效果: