首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 2D 基礎圖形繪製完全指南:矩形、圓角矩形、橢圓、弧形與填充扇形

     編輯:Java 相關知識

系統梳理 Java AWT Graphics 核心繪圖方法,涵蓋矩形、圓角矩形、多邊形、橢圓、弧形、填充扇形六大基礎圖形,附帶網格背景輔助定位,代碼可直接運行觀察效果,是 2D 圖形學入門必修課。

核心類別:Sample


import java.awt.*;
import javax.swing.*;
public class Sample extends JFrame {
    public static void main(String[] args) { new Sample().update(); }
    Sample() {
        super("Basic Shapes Demo");
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setSize(310, 160);
        setVisible(true);
    }
    public void update() { repaint(); }
    public void paint(Graphics g) {
        // 1. 繪製 10px 網格輔助定位
        g.setColor(Color.CYAN);
        for (int i = 0; i <= 300; i += 10) g.drawLine(i, 0, i, 150); // 垂直線
        for (int i = 0; i <= 150; i += 10) g.drawLine(0, i, 300, i); // 水平線
        // 2. 基礎圖形繪製
        g.setColor(Color.BLACK);
        // 矩形 (x, y, width, height)
        g.drawRect(10, 30, 80, 50);
        // 圓角矩形 (x, y, width, height, arcWidth, arcHeight)
        g.drawRoundRect(110, 30, 80, 50, 20, 10);
        // 多邊形 (xPoints, yPoints, nPoints)
        int[] x = {10, 30, 80, 50, 10};
        int[] y = {90, 140, 120, 100, 90};
        g.drawPolygon(x, y, 5);
        // 橢圓/圓 (x, y, width, height) — 外接矩形
        g.drawOval(110, 90, 80, 50);
        // 弧形 (x, y, width, height, startAngle, arcAngle)
        g.drawArc(210, 30, 80, 50, 0, 90); // 0° 起始,順時針 90°
        // 填充扇形
        g.fillArc(210, 90, 80, 50, 0, 90);
    }
}

方法參數詳解速查表

方法參數含義角度制約定
drawRect(x, y, w, h)左上角 (x,y),寬 w,高 h—
drawRoundRect(x, y, w, h, aw, ah)圓角橫向寬 aw,縱向高 ah—
drawPolygon(x[], y[], n)n 個頂點連線封閉—
drawOval(x, y, w, h)外接矩形 (x,y,w,h)—
drawArc(x, y, w, h, start, extent)外接矩形 + 起始角度 + 掃過角度3點鐘=0°,順時針為正
fillArc(...)同 drawArc,填充扇形區域同左

關鍵細節提醒

  • 座標系原點:視窗左上角 (0,0),X 向右,Y 向下。
  • 角度單位:度(非弧度),startAngle=0 為 3 點鐘方向,順時針增加。
  • 弧形 vs 扇形:drawArc 只畫弧線,fillArc 畫扇形(弧線+兩條半徑連線)。
  • 多邊形閉合:drawPolygon 自動連接首尾頂點;drawPolyline 不閉合。
  • 填充對應:每個 drawXxx 都有對應 fillXxx(如 fillRect, fillOval)。

Graphics2D 進階功能預覽


Graphics2D g2 = (Graphics2D) g;
// 抗鋸齒
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// 線條樣式
g2.setStroke(new BasicStroke(3, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 0, new float[]{10,5}, 0)); // 虛線
// 變換
g2.translate(50, 50); g2.rotate(Math.PI/4); g2.scale(1.5, 1.5);
// 繪製後恢復
g2.setTransform(new AffineTransform());
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved