设置颜色与画笔

《零基础学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   TeaTracing  阅读(845)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示