Java基础 awt Graphics2D 生成矩形图片并向其中画一条直线

  • JDK :OpenJDK-11
  • OS :CentOS 7.6.1810
  • IDE :Eclipse 2019‑03
  • typesetting :Markdown

code

package per.jizuiku.gui;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.imageio.ImageIO;

/**
 * @author 给最苦
 * @date 2019/06/30
 * @blog www.cnblogs.com/jizuiku
 */
public class Demo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        try {
            getImage();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    /**
     *
     * @throws FileNotFoundException
     * @throws IOException
     */
    public static void getImage() throws FileNotFoundException, IOException {
        // 得到图片缓冲区
        int width = 100;
        int height = 50;
        int imageType = BufferedImage.TYPE_INT_BGR;
        BufferedImage myImage = new BufferedImage(width, height, imageType);

        // 得到画笔
        Graphics2D pen = (Graphics2D)myImage.getGraphics();

        // 设置笔的颜色,即背景色
        pen.setColor(Color.WHITE);

        // 画出一个矩形
        // 坐标x 坐标y 宽度100 长度50
        pen.fillRect(0, 0, 100, 50);

        // 字的颜色 和 背景的颜色 要不同的
        pen.setColor(Color.blue);

        // 划线
        // 点动成线,线动成面,面动成体
        // 两点确定一条直线
        int xStart = 5;
        int yStart = 15;
        int xEnd = 60;
        int yEnd = 30;

        // 设置线的宽度
        float lineWidth = 7F;
        pen.setStroke(new BasicStroke(lineWidth));

        pen.drawLine(xStart, yStart, xEnd, yEnd);

        ImageIO.write(myImage, "JPEG", new FileOutputStream("line" + ".jpg"));

    }

}

result

Java基础 awt Graphics2D 生成矩形图片并向其中画一条直线

sourceCode

/**
    * Draws a line, using the current color, between the points
    * (x1, y1) and (x2, y2)
    * in this graphics context's coordinate system.

    * @param   x1  the first point's x coordinate.

    * @param   y1  the first point's y coordinate.

    * @param   x2  the second point's x coordinate.

    * @param   y2  the second point's y coordinate.

    */
public abstract void drawLine(int x1, int y1, int x2, int y2);

resource

  • [ JDK ] openjdk.java.net
  • [ doc – 参考 ] docs.oracle.com/en/java/javase/11
  • [ 规范 – 推荐 ] yq.aliyun.com/articles/69327
  • [ 规范 – 推荐 ] google.github.io/styleguide
  • [ 源码 ] hg.openjdk.java.net
  • [ OS ] www.centos.org
  • [ IDE ] www.eclipse.org/downloads/packages
  • [ 平台 ] www.cnblogs.com

感谢帮助过 给最苦 的人们。
Java、Groovy和Scala等基于JVM的语言,优秀,值得学习。
规范的命名和代码格式等,有助于沟通和理解。
JVM的配置、监控与优化,比较实用,值得学习。

Original: https://www.cnblogs.com/jizuiku/p/11110234.html
Author: 给最苦
Title: Java基础 awt Graphics2D 生成矩形图片并向其中画一条直线

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

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

(0)

大家都在看

  • 在Win11的WSL中体验IDEA等GUI程序

    原本已经 放弃WSL很久了,这两天把Win10更新到Win11,看到WSL2已经发布,而且貌似还有很大升级还可以在 WSL中跑Linux GUI应用。在加上Win11的支持简直可以…

    Java 2023年6月16日
    087
  • WORD模板使用

    Date: 2012-12-03 13:05:55 中国标准时间 Author: csophys Org version 7.8.11 with Emacs version 24V…

    Java 2023年6月7日
    0112
  • 封装

    java三大特性之一封装,就是把内部数据 “隐藏”起来,只暴露少量方法供外部使用,比如日常生活使用的电子产品,使用者只需要知道怎么去使用,不用去了解其内部构…

    Java 2023年6月5日
    056
  • 【源码笔记】构建Spring源码环境

    IDEA构建Spring源码,不成功你来抓我 posted @2022-07-14 22:43 daheww 阅读(15 ) 评论() 编辑 Original: https://w…

    Java 2023年6月6日
    086
  • 若依不分离版本多图片预览

    直接复制粘贴只用改字段但我的数据库中存的照片地址是用 【,】 隔开的,因为代码复制粘贴到这里,只出现一行的情况,所以这里我以图片代替 innerHTML解释 innerHTML&a…

    Java 2023年6月5日
    0101
  • 《二十三种设计模式》通俗的创建型之单例设计模式

    单例模式(Singleton Pattern)是Java中 最简单的设计模式之一。 这种模式涉及到一个 单一的类,该类负责创建自己的对象,同时确保只有 单个对象被创建。这个类提供了…

    Java 2023年6月7日
    0108
  • Java(4)字符串

    从概念上讲,Java字符串就是 Unicode字符序列。例如,字符串 “Java\u2122″由5个 Unicode字符 J、 a、 v、 a和 ™组成。Ja…

    Java 2023年6月9日
    087
  • hashMap、ConcurrentHashMap、hashTable、TreeMap、LinkedHashMap用法区别详解

    hashMap 底层结构是:数组+链表+红黑树(jdk1.8之前就是存储的数组+链表) 说明: 数组的&#…

    Java 2023年6月5日
    083
  • js模块化开发

    外部js文件 function a(a,b) {console.log(a+b);} 导出:module.exports ={a}; 引用: import {a} from (路径…

    Java 2023年6月15日
    067
  • 判断一个数是否是五角星数

    示例如下: /** * Java输出五角星数 *…

    Java 2023年6月6日
    073
  • 使用Python定时清理运行超时的pdflatex僵尸进程

    问题 在我们之前的《基于texlive定制chemfig化学式转换Python服务镜像》定制的pdflatex在线转换的镜像已经运行在生产环境了,但是最近总有人反馈服务跑着跑着就慢…

    Java 2023年6月7日
    088
  • springboot学习第一步

    关于springboot的介绍就不多说了,可以去百度。 默认的情况下,springboot1.4.0版本要求Java7以上和spring4.3.2以上,当然你也可以使用java1….

    Java 2023年6月7日
    070
  • layui 给数据表格指定字段值添加颜色(转载,用于记录)

    转载地址:https://blog.csdn.net/weixin_44543307/article/details/97482237 一:简单赋予颜色 二:动态改变颜色 三:进阶…

    Java 2023年6月5日
    091
  • 远程注册表读取,与多线程池的应用.

    界面如下: 一般用在域环境下,读取客户机注册的配制信息. 主要代码如下: private void button1_Click(object sender, System.Even…

    Java 2023年5月30日
    071
  • Hexo 必装插件

    可以优化博客路径,默认路径 https://xcmaster.com/2022/07/07/hexo必装插&amp…

    Java 2023年6月9日
    069
  • 简易线程池的实现

    1 线程池 为了避免多线程操作过程种线程频繁申请和释放所带来的性能消耗,可以提前创建多个线程,当有任务到来时从线程池中选择一个线程执行,执行完后继续在线程池中待命。 核心是使用一个…

    Java 2023年5月30日
    0110
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球