設定顏色與畫筆
阿新 • • 發佈:2022-05-28
《零基礎學Java》
-
設定顏色與畫筆
Java使用 java.at.Color類 封裝顏色的各種屬性,並對顏色進行管理。在繪製圖形時還可以指定線條的粗細、虛實等畫筆屬性,該屬性通過 Stroke介面 指定。
-
設定顏色
Color類 可以建立任何顏色的物件。
Color物件構造方法:
//Color物件構造方法一 Color color = new Color(int r , int g , int b); /* r:紅色值 g:綠色值 b:藍色值 */ //Color物件構造方法二 Color color = new Color(int rgb); /* rgb:紅、綠、藍 三原色的總和 */
繪圖類可以使用 setColor()方法 設定當前顏色。
setColor()方法 語法:
setColor(Color color); //color:顏色值
Color常量:
設定顏色 例項:
import javax.swing.*; import java.awt.*; public class Demo1 extends JFrame { public Demo1(){ super(); init(); } public void init(){ this.setSize(300,200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle("設定顏色"); add(new MyCanvas()); } public static void main(String[] args) { new Demo1().setVisible(true); } class MyCanvas extends Canvas{ @Override public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; Color c = Color.red; //紅色物件 g2.setColor(Color.cyan); //設定顏色 g2.drawLine(5,30,100,30); g2.setColor(c); //設定顏色 g2.fillRect(50,50,50,50); } } }
設定顏色 例項輸出結果:
-
設定畫筆
預設情況下,Graphics繪圖類 使用的畫筆屬性是粗細為I個畫素的正方形,而Graphics2D類可以呼叫 setStroke()方法 設定畫筆的屬性,如改變線條的粗細、虛實和定義線段端點的形狀、風格等。
setStroke()方法 語法:
setStroke(stroke stroke); // stroke:是Stroke介面的實現類
setStroke()方法 必須接受一個 Stroke介面 的實現類作引數,java.awt包中提供了BasicStroke類,它實現了Stroke介面,並且通過不同的構造方法建立畫筆屬性不同的物件。
BasicStroke類 的構造方法:
BasicStroke(); BasicStroke(float width); //設定畫筆寬度 BasicStroke(float width , int cap , int join); //設定畫筆寬度、末端效果、交匯效果 BasicStroke(float width , int cap , int join , float miterlimit); //設定畫筆寬度、末端效果、交匯效果、斜切處的剪裁限制 BasicStroke(float width , int cap , int join , float miterlimit , float[] dash , float dash_phase); //設定畫筆寬度、末端效果、交匯效果、斜切處的剪裁限制、虛線模式的陣列、虛線模式的偏移量 /* cap引數的三個常量: 圓角:BasicStroke.CAP_ROUND 無修飾:BasicStroke.CAP_BUTT 正方形:BasicStroke.CAP_SQUARE join引數的三個常量: 平角:BasicStroke.JOIN_BEVEL 尖角:BasicStroke.JOIN_MITER 圓角:BasicStroke.JOIN_ROUND */
設定畫筆 例項:
import javax.swing.*; import java.awt.*; public class Demo2 extends JFrame { public Demo2(){ super(); init(); } public void init(){ this.setSize(300, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); add(new MyCanvas()); } public static void main(String[] arge){ new Demo2().setVisible(true); } class MyCanvas extends Canvas { public void paint(Graphics g){ Graphics2D g2 = (Graphics2D) g; // 直線 Stroke stroke = new BasicStroke(8); //設定畫筆寬度 g2.setStroke(stroke); //載入畫筆 g2.drawLine(20, 30, 120, 30); // 多邊線 int x[] = {150,200,180}; int y[] = {30,30,80}; /* 末端效果: 圓角:BasicStroke.CAP_ROUND 無修飾:BasicStroke.CAP_BUTT 正方形:BasicStroke.CAP_SQUARE 角的交匯效果: 平角:BasicStroke.JOIN_BEVEL 尖角:BasicStroke.JOIN_MITER 圓角:BasicStroke.JOIN_ROUND */ Stroke stroke1 = new BasicStroke(12,BasicStroke.CAP_SQUARE,BasicStroke.JOIN_ROUND); //設定畫筆寬度、末端效果、角的交匯效果 g2.setStroke(stroke1); //載入畫筆 g2.drawPolyline(x,y,3); } } }
設定畫筆 例項輸出結果: