Java的java.awt包中的Graphics类有许多处理图形的方法:
一、绘制文本
g.drawString(String s,int x,int y); //绘制字符串(Grahpics g)
g.drawChars(char data[],int offset,int length,int x,int y); //绘制data数组中的部分字符
二、绘制基本图形
drawLine(int x1,int y1,int x2,int y2); //绘制直线
drawRect(int x,int y,int w,int h); //绘制矩形
drawRoundRect(int x,int y,int w,int h,int arcW,int arcH); //绘制圆角矩形
fillRoundRect(int x,int y,int w,int h,int arcW,int arcH); //绘制填充圆角矩形
drawOval(int x,int y,int w,int h); //绘制椭圆
fillOval(int x,int y,int w,int h); //绘制填充椭圆
drawArc(int x,int y,int w,int h,int starAngle,int arcAngle); //绘制圆弧
fillArc(int x,int y,int w,int h,int starAngle,int arcAngle); //绘制填充圆弧
drawPolygon(int xPoints[],int yPoints[],int nPoints); //绘制多边形
fillPolygon(int xPoints[],int yPoints[],int nPoints); //绘制填充多边形
三、建立字体
setFont(Font f);
四、清除
clearRect(int x,int y,int w,int h); //用背景色填充指定矩形
五、Java 2D图形
Graphics2D是Graphics的子类,它将直线、圆等作为一个对象来绘制。
1.画直线
Graphics2D g_2d=(Graphics g);
Line2D line=new Line2D.Double(2,2,300,300);
g_2d.draw(line);
2.绘制矩形
Rectangle2D rect=new Rectangle2D.Double(50,50,300,50);
3.绘制圆角矩形
RoundRectangle2D r_rect=new RoundRectangle2D.double(50,50,300,50,8,5);
4.绘制椭圆
Ellipse2D e=new Ellipse2D.Double(50,30,300,50);
5.绘制圆弧
Arc2D e=new Arc2D.Double(50,30,300,50,0,100,Arc.PIE/Arc.OPEN/Arc.CHORD);
6.绘制二次曲线
y(x)=ax^2+bx+c表示。
QuadCurve2D curve=new QuadCurve2D.Double(50,30,10,10,50,100);
7.绘制三次曲线
y(x)=ax^3+bx^2+cx+d
CubicCurve2D curve=new CubicCurve2D.Double(50,30,10,10,100,100,50,100);
8.控制图形线条的粗细
BasicStroke (float width,int cap,int join); //width决定线条的粗细,默认是1;cap决定线条两端的形状,取值 为:BasicStroke.CAP_BUTT,BasicStroke.CAP_ROUND,BasicStroke.CAP_SQUARE;join 决定线条中的角应如何处理,其取值 为:BasicStroke.JOIN_BEVEL,BasicStroke_JOIN_MITER,BasicStroke.JOIN_ROUND。
Graphics2D对象调用方法setStroke(BasicStroke a)设置线条形状。
9.填充图形
使用fill方法。
渐变颜色填充:
GradientPaint(float x1,float y1,Color color1,float x2,float y2,Color color2,boolean cyclic);
10.旋转图形
1) 使用AffineTransform类创建对象:
AffineTransform trans=new Affinetransform();
translate(double a,double b):将图形在x轴方向移动a个像素,y轴方向移动b个像素。
scale(double a,double b):将图形在x轴方向绽放a倍,y轴方向绽放b倍。
rotate(double number,double x,double y):将图形沿顺时针或逆时针以(x,y)为轴点旋转number个弧度。
2) 进行需要的变换,如将矩形绕点(100,100)顺时针旋转60度:
trans.rotate(60.0*3.1415927/180,100,100);
3) 把Graphics对象,比如g_2d设置为具有trans这种功能的画笔:
g_2d.setTransform(trans);
六、图形的布尔运算
public void add(Area r); //与参数r布尔“或”
public void intersect(Area r) //与参数r布尔“与”
public void exclusiveOr(Area r); //与参数r布尔“异或”
public void subtract(Area r); //与参数r布尔“差”
七、XOR绘图模式
setXORMode(Color color);