java图形处理-Java 2D

时间:2022-06-04 11:00:42

Java 2D API分为以下几个包

java.awt.geom 
提供用于在与二维几何形状相关的对象上定义和执行操作的 Java 2D 类。 
Area 对象存储和操作2维空间封闭区域的与解析无关的描述。
   public Rectangle getBounds() 返回完全包围此 Area 的边界 Rectangle。
   public boolean contains(double x, double y)  测试指定坐标是否在 Shape 的边界内。
   对区域进行加、减、交和异或。
   public void add(Area rhs)
   public void subtract(Area rhs)
   public void intersect(Area rhs)
   public void exclusiveOr(Area rhs)

java.awt.font 字体类
 Font f = new Font(String name,int style,int size);//style Font.ITALIC

java.awt.color  颜色定义和颜色调优

java.awt.image 用于图像定义

java.awt.image.renderable  图像渲染

java.awt.print

java.awt.Graphics2D
以提供如何绘制图形的信息,包含六个属性
绘制 paint    作用在边线和填充上
画笔 stroke   描边决定着图形或文字的轮廓,边缘即可以是粗细不等的实线,也可以是等宽点线
字体 font     所有的文本都使用能表现文字的样式图形渲染
转换 transform 图形在渲染前可能会进行一步或多步的变形 图形可能被移动,旋转或拉伸
剪切 clip
合成 composite

javax.imageio
Java高级图像处理图像I/O工具包

eg; java2D绘制直线,矩形,椭圆

[java]  view plain copy
  1. package com.mapbar.graphics;  
  2.   
  3. import java.awt.Graphics2D;  
  4. import java.awt.geom.Ellipse2D;  
  5. import java.awt.geom.Line2D;  
  6. import java.awt.geom.Rectangle2D;  
  7. import java.awt.image.BufferedImage;  
  8. import java.io.File;  
  9. import java.io.IOException;  
  10.   
  11. import javax.imageio.ImageIO;  
  12.   
  13. /**   
  14.  
  15.  * Class DrawGraphics.java  
  16.  
  17.  * Description  java2D绘制直线,矩形,椭圆,旋转图形 
  18.  
  19.  * Company mapbar   
  20.  
  21.  * author Chenll  
  22.  
  23.  * Version 1.0  
  24.  
  25.  * Date 2012-7-20 下午12:06:15 
  26.  
  27.  */  
  28. public class DrawGraphics{  
  29.       
  30.     private BufferedImage image;  
  31.       
  32.     private  Graphics2D graphics;  
  33.       
  34.     public void init(){  
  35.          int width=480,hight=720;    
  36.          image = new BufferedImage(width,hight,BufferedImage.TYPE_INT_RGB);    
  37.          //获取图形上下文   
  38.          graphics = (Graphics2D)image.getGraphics();    
  39.     }  
  40.       
  41.       
  42.     /** 
  43.      * 创建一个(x1,y1)到(x2,y2)的Line2D对象 
  44.      * @throws IOException 
  45.      */  
  46.     public void drawLine() throws IOException{  
  47.          init();  
  48.          Line2D line=new Line2D.Double(2,2,300,300);  
  49.          graphics.draw(line);  
  50.          graphics.dispose();  
  51.          outImage("PNG","D:\\Line.PNG");  
  52.     }  
  53.       
  54.       
  55.     /** 
  56.      * 创建一个左上角坐标是(50,50),宽是300,高是400的一个矩形对象 
  57.      * @throws IOException 
  58.      */  
  59.     public void drawRect() throws IOException{  
  60.         init();  
  61.         Rectangle2D rect = new Rectangle2D.Double(50,50,400,400);  
  62.         graphics.draw(rect);  
  63.         graphics.fill(rect);  
  64.         graphics.dispose();  
  65.         outImage("PNG","D:\\Rect.PNG");  
  66.     }  
  67.       
  68.     /** 
  69.      * 创建了一个左上角坐标是(50,50),宽是300,高是200的一个椭圆对象,如果高,宽一样,则是一个标准的圆 
  70.      *  
  71.      * @throws IOException 
  72.      */  
  73.     public void drawEllipse() throws IOException{  
  74.         init();  
  75.         Ellipse2D ellipse=new Ellipse2D.Double(50,50,300,200);  
  76.         graphics.draw(ellipse);  
  77.         graphics.fill(ellipse);  
  78.         graphics.dispose();  
  79.         outImage("PNG","D:\\ellipse.PNG");  
  80.     }   
  81.       
  82.     /** 
  83.      * 输出绘制的图形 
  84.      * @param type 
  85.      * @param filePath 
  86.      * @throws IOException 
  87.      */  
  88.     public void outImage(String type,String filePath) throws IOException{  
  89.          ImageIO.write(image,type, new File(filePath));  
  90.     }  
  91.       
  92.     public static void main(String[] args) throws IOException{  
  93.         DrawGraphics dg = new DrawGraphics();  
  94.         dg.drawLine();  
  95.         dg.drawRect();  
  96.         dg.drawEllipse();  
  97.     }  
  98. }