设置颜色与画笔

《零基础学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);
            }
        }
    }
    

    设置画笔 实例输出结果:

posted on 2022-05-28 14:58  TeaTracing  阅读(749)  评论(0编辑  收藏  举报