java:繪製圖形

蝠氣滿滿發表於2022-11-23

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);
    }
}

 

 執行結果如下:

 

相關文章