Java中繪制圖形的核心是使用graphics2d類,它提供豐富的繪圖功能。1. 繪制基本形狀:通過drawrect/fillrect繪制矩形,drawoval/filloval繪制橢圓,drawline繪制直線;2. 設置顏色和線條樣式:setcolor設置顏色,setstroke設置線寬、虛線等樣式;3. 繪制復雜圖形:利用path2d創建自定義路徑,包括直線和貝塞爾曲線;4. 圖形變換:translate實現平移,rotate進行旋轉,scale完成縮放;5. 抗鋸齒效果:通過renderinghints開啟抗鋸齒提升圖形質量;6. 繪制文本:使用drawString方法結合setfont設置字體;7. 漸變填充:通過gradientpaint創建顏色漸變效果。掌握這些技巧可全面實現java中的圖形繪制需求。
Java中繪制圖形,核心在于使用Graphics2D類,它提供了比Graphics更強大的繪圖功能,允許你繪制各種形狀、應用顏色、設置線條樣式等等。簡單來說,就是用Graphics2D這支筆,在你的Java程序畫布上畫出各種東西。
掌握Graphics2D繪圖,需要理解其基本用法和一些高級技巧。
繪制基本形狀
Graphics2D提供了繪制各種基本形狀的方法,例如矩形、橢圓、直線等。
立即學習“Java免費學習筆記(深入)”;
-
矩形: 使用drawRect(int x, int y, int width, int height)繪制矩形邊框,fillRect(int x, int y, int width, int height)繪制填充矩形。
Graphics2D g2d = (Graphics2D) g; g2d.drawRect(50, 50, 100, 80); // 繪制一個矩形,左上角坐標(50, 50),寬100,高80 g2d.fillRect(200, 50, 100, 80); // 繪制一個填充矩形
-
橢圓: 使用drawOval(int x, int y, int width, int height)繪制橢圓邊框,fillOval(int x, int y, int width, int height)繪制填充橢圓。這里的width和height分別代表橢圓外接矩形的寬度和高度。
g2d.drawOval(50, 150, 100, 80); // 繪制一個橢圓 g2d.fillOval(200, 150, 100, 80); // 繪制一個填充橢圓
-
直線: 使用drawLine(int x1, int y1, int x2, int y2)繪制直線,從點(x1, y1)到點(x2, y2)。
g2d.drawLine(50, 250, 300, 250); // 繪制一條直線
如何設置顏色和線條樣式
Graphics2D允許你自定義顏色和線條樣式,讓你的圖形更加豐富多彩。
-
設置顏色: 使用setColor(Color c)設置繪圖顏色。Color類提供了許多預定義的顏色,例如Color.red、Color.BLUE等,你也可以使用RGB值自定義顏色。
g2d.setColor(Color.RED); // 設置顏色為紅色 g2d.fillRect(50, 300, 100, 80); g2d.setColor(new Color(0, 255, 0)); // 設置顏色為綠色 (RGB) g2d.fillOval(200, 300, 100, 80);
-
設置線條樣式: 使用setStroke(Stroke s)設置線條樣式。BasicStroke類提供了多種線條樣式,例如線寬、虛線等。
Stroke stroke = new BasicStroke(5.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); // 設置線寬為5,端點和連接處為圓形 g2d.setStroke(stroke); g2d.drawLine(50, 400, 300, 400); float[] dashPattern = {10, 5, 2, 5}; // 定義虛線模式:實線10像素,空白5像素,實線2像素,空白5像素 stroke = new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, dashPattern, 0.0f); g2d.setStroke(stroke); g2d.drawLine(50, 450, 300, 450);
繪制復雜圖形:Path2D
對于更復雜的圖形,可以使用Path2D類。Path2D允許你創建由直線、曲線等組成的任意形狀。
-
創建Path2D: Path2D.double是最常用的Path2D實現。
Path2D path = new Path2D.Double(); path.moveTo(100, 500); // 將畫筆移動到(100, 500) path.lineTo(150, 550); // 從當前位置繪制一條直線到(150, 550) path.curveTo(200, 450, 250, 650, 300, 500); // 繪制一條貝塞爾曲線 g2d.draw(path); // 繪制路徑
如何進行圖形變換:旋轉、縮放、平移
Graphics2D允許你對圖形進行旋轉、縮放和平移等變換。
-
平移: 使用translate(int x, int y)將坐標系平移(x, y)。
g2d.translate(50, 50); // 將坐標系向右平移50,向下平移50 g2d.drawRect(0, 0, 100, 80); // 繪制的矩形實際上在(50, 50)的位置 g2d.translate(-50, -50); // 恢復坐標系
-
旋轉: 使用rotate(double theta)將坐標系旋轉theta弧度。
g2d.rotate(Math.toRadians(45)); // 將坐標系旋轉45度 g2d.drawRect(150, 500, 100, 80); // 繪制的矩形會被旋轉 g2d.rotate(-Math.toRadians(45)); // 恢復坐標系
-
縮放: 使用scale(double sx, double sy)將坐標系在x方向縮放sx倍,在y方向縮放sy倍。
g2d.scale(0.5, 0.5); // 將坐標系縮小到原來的0.5倍 g2d.drawRect(300, 500, 100, 80); // 繪制的矩形會縮小 g2d.scale(2, 2); // 恢復坐標系
如何實現抗鋸齒效果
抗鋸齒可以使繪制的圖形邊緣更加平滑,避免出現鋸齒狀。
-
開啟抗鋸齒: 使用RenderingHints類設置抗鋸齒選項。
RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setRenderingHints(rh);
如何繪制文本
除了圖形,Graphics2D也可以繪制文本。
-
繪制文本: 使用drawString(String str, int x, int y)在指定位置繪制文本。
g2d.setColor(Color.BLACK); g2d.setFont(new Font("Arial", Font.BOLD, 20)); // 設置字體 g2d.drawString("Hello, Graphics2D!", 50, 100);
如何使用漸變填充
漸變填充可以使圖形顏色過渡更加自然。
-
創建漸變: 使用GradientPaint類創建漸變。
GradientPaint gp = new GradientPaint(50, 50, Color.BLUE, 150, 150, Color.GREEN, true); // 從(50, 50)的藍色漸變到(150, 150)的綠色,循環漸變 g2d.setPaint(gp); g2d.fillRect(50, 50, 200, 100);