设置颜色与画笔

  • 设置画笔 默认情况下,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);
        }
    }
}

设置画笔 实例输出结果:

Original: https://www.cnblogs.com/TeaTracing/p/16320700.html
Author: TeaTracing
Title: 设置颜色与画笔

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/622455/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 一句话的需求怎么测?需求文档的三种现状及应对策略

    转载请注明出处❤️ 你好,我是测试蔡坨坨。 今天,我们来聊聊需求文档那些事儿…… 众所周知,软件需求是软件项目研发的开始,是组建研发团队后第一次集体讨论的事…

    数据库 2023年6月11日
    0133
  • DASCTF 冰墩墩

    SimpleFlow 一下子就能发现传了一个含有flag.txt的压缩包,需要密码,字典简单跑一下就发现是 <span class=”ne-text”>PaSsZiPW…

    数据库 2023年6月11日
    0105
  • 代码优化记录

    代码优化记录 神龟虽寿,犹有竟时。 神龟虽寿 犹有竟时 Original: https://www.cnblogs.com/taojietaoge/p/15853508.htmlA…

    数据库 2023年6月14日
    0124
  • 面试必问之 CopyOnWriteArrayList,你了解多少?

    一、摘要 在介绍 CopyOnWriteArrayList 之前,我们一起先来看看如下方法执行结果,代码内容如下: public static void main(String[]…

    数据库 2023年6月14日
    0115
  • synchronized 是可重入锁吗?为什么?

    什么是可重入锁? 若一个程序或子程序可以”在任意时刻被中断然后操作系统调度执行另外一段代码,这段代码又调用了该子程序不会出错”,则称其为可重入(reentr…

    数据库 2023年6月16日
    0137
  • java crm 进销存 模块设计方案

    主页: 记录总进货额、总销售额、总销售利润、30天内销售金额统计总客户数、30天新增客户数图表统计(折线图和柱状图)展示从当前月份开始前12个月销售情况1. 客户资料:记录客户资料…

    数据库 2023年6月6日
    0119
  • 3000帧动画图解MySQL为什么需要binlog、redo log和undo log

    全文建立在MySQL的存储引擎为InnoDB的基础上 先看一条SQL如何入库的: 这是一条很简单的更新SQL,从MySQL服务端接收到SQL到落盘,先后经过了MySQL Serve…

    数据库 2023年6月16日
    0138
  • Win10系统链接蓝牙设备

    进入设备界面,删除已有蓝牙,如果蓝牙耳机已经链接其他设备,先断开链接 点击添加蓝牙或其他设备 Original: https://www.cnblogs.com/itcaimeng…

    数据库 2023年6月11日
    0132
  • MySQL查询性能优化七种武器之链路追踪

    MySQL优化器可以生成Explain执行计划,我们可以通过执行计划查看是否使用了索引,使用了哪种索引? 但我们并不确切地知道为什么使用这个索引。 [En] But we don&…

    数据库 2023年5月24日
    0120
  • 即时通讯课设Android端问题记录

    转眼间,就已经是大四学生,目前正在写毕设。Android 端没有系统的学习过,都是哪里不会查哪里,基本靠度娘。所以,在此记录下课设开发过程中,Android 端遇到的问题。 在主线…

    数据库 2023年6月9日
    0104
  • Centos7下Oracle启动命令

    1、查询挂载历史记录 在root账户下使用一下命令 查看历史使用挂载的那个磁盘 &#x67E5;&#x770B;&#x6302;&#x8F7D;&a…

    数据库 2023年6月16日
    0124
  • MySQL函数1(单行函数)

    单行函数 函数的理解 分类 数值函数 基本函数 PI()无参数 CETL \ CETLING()天花板函数(取比自己大的相邻的数) FLOOR()地板函数(取比自己小的相邻的数) …

    数据库 2023年5月24日
    0145
  • 在windows上用docker desktop安装StoneDB

    自6月底开源以来,许多热心的社区用户都对StoneDB进行了编译和测试,也有一些用户询问StoneDB是否会支持Windows。虽然适配Windows版本的StoneDB尚未进入研…

    数据库 2023年5月24日
    0139
  • Css3入门详解

    一、Css基本语法 1.Html和Css没分开 点击查看代码 <!DOCTYPE html> <html lang="en"> <…

    数据库 2023年6月16日
    0119
  • SpringBoot整合WebService(实用版)

    SpringBoot整合WebService 简介 WebService就是一种跨编程语言和跨操作系统平台的远程调用技术 此处就不赘述WebService相关概念和原理了,可以参考…

    数据库 2023年6月16日
    0137
  • MySQL数据库 DDL 阻塞问题定位 【转载】

    陈臣,甲骨文MySQL首席解决方案工程师,公众号《MySQL实战》作者,有大规模的MySQL,Redis,MongoDB,ES的管理和维护经验,擅长MySQL数据库的性能优化及日常…

    数据库 2023年6月16日
    0130
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球