1. 程式人生 > 其它 >設定顏色與畫筆

設定顏色與畫筆

《零基礎學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);
            }
        }
    }
    

    設定畫筆 例項輸出結果: