java繪圖類:Graphics類
繪圖是高階程式中必備的技術,在很多方面都能用到,如:繪製閃屏圖片,背景圖片和元件外觀等。
1.Graphics類
Graphics類是所有圖形上下文的抽象基類,Graphics類封裝了java支援的基本繪圖操作的所需狀態資訊,主要包括:顏色,字型,畫筆,文字,影像。 Graphics類提供了繪圖的常用方法,利用這些方法可以繪製一些基本圖形(直線,圓弧,矩形,多邊形,橢圓等)。
2.Graphics2D類
Graphics2D類繼承了Graphics類,Graphics類可以繪製簡單的圖形,但功能十分有限。而Graphics2D類是一個更強大的繪圖操作集合,因此Graphics2D類是最常用的一個繪圖類。
繪製圖形:
Graphics類的常用方法:
方法 | 說明 | 舉例 |
drawLine(int x1,int y1,int x2,int y2) | 直線 | drawLine(100,100,100,100); |
drawArc(int x,int y,int width,int height,int startAngle, int arcAngle) | 無填充色弧線 | drawArc(100,100,100,200,100); |
fillArc(int x,int y,int width, int height, int startAngle, int arcAngle) | 用setColor()方法設定的顏色,畫著色橢圓的一部分。 | g.setColor(Color.green); g.fillArc(60,100,100,60,-90,-270); |
drawRect(int x,int y,int width,int height) |
無填充色矩形 其中引數x和y指定左上角的位置,引數width和height是矩形的寬和高 |
g.drawRect(80,100,40,25); |
fillRect(int x,int y,int width,int height) | 是用預定的顏色填充一個矩形,得到一個著色的矩形塊 |
g.setColor(Color.yellow); g.fillRect(20,20,20,20); |
drawPolygon(int xpoints[],int yPoints[],int nPoints) | 繪製一個普通多邊形 |
int m ={10,50,10,50}; int n = {10,10,50,10}; drawPolygonm,n,100); |
fillPolygon(int xPoints[],int yPoints[],int nPoints) | 用方法setColor()設定的顏色著色多邊形。其中陣列xPoints[]儲存x座標點,yPoints[]儲存y座標點,nPoints是座標點個數 | int px1[]={50,90,10,50}; int py1[]={10,50,50,10}; int px2[]={140,180,170,180,140,100,110,140}; int py2[]={5,25,35,45,65,35,25,5}; g.setColor(Color.blue); g.fillPolygon(px1,py1,4); g.setColor(Color.red); g.drawPolygon(px2,py2,9); |
drawOval(int x,int y,int width,int height) | 是畫用線圍成的橢圓形。其中引數x和引數y指定橢圓形左上角的位置,引數width和height是橫軸和縱軸 | drawOval(10,10,100,50); |
續表:
方法 | 說明 | 舉例 |
fillOval(int x,int y,int width,int height) | 是用預定的顏色填充的橢圓形,是一個著色塊。也可以用畫橢圓形方法畫圓形,當橫軸和縱軸相等時,所畫的橢圓形即為圓形 | g.drawOval(10,10,60,100); g.setColor(Color.cyan);g.fillOval(100,50,60,60); g.setColor(Color.magenta);g.fillOval(15,50,100,50); |
draw3DRect(int x,int y,int width,int height, boolean raised) | 畫一個突出顯示的矩形。其中x和y指定矩形左上角的位置,引數width和height是矩形的寬和高,引數raised是突出與否 | draw3DRect(100,30,30,50, true); |
fill3DRect(int x,int y,int width,int height,boolean raised) | 用預定的顏色填充一個突出顯示的矩形 | g.draw3DRect(80,100,40,25,true); g.setColor(Color.yellow); g.fill3DRect(30,70,20,30,true); |
示例:
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
public class Drawtest extends JFrame
{
public Drawtest(){
setTitle("示例");
setSize(300,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(new s());
}
class s extends JPanel{
public void paint(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
Shape[] shapes = new Shape[4];
shapes[0] = new Ellipse2D.Double(5,5,100,100);
shapes[1] = new Rectangle2D.Double(110,5,100,100);
shapes[2] = new Rectangle2D.Double(15,15,80,80);
shapes[3] = new Ellipse2D.Double(120,15,80,80);
for(Shape shape:shapes){
Rectangle2D bounds = shape.getBounds2D();
if(bounds.getWidth() == 80) g2.fill(shape);
else g2.draw(shape);
}
}
}
public static void main(String[] args) {
new Drawtest().setVisible(true);
}
}
執行結果如下: