19.java绘图

A.Graphics类

   Graphics类是java.awt包中的一个类,它用于在图形用户界面(GUI)或其他图形应用程序中进行绘制。该类通常与Componentpaint方法一起使用,以在组件上进行绘制操作。

        一些Graphics类的常见用法和方法:

在组件上绘制图形:

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

class MyPanel extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        
        // 绘制矩形
        g.drawRect(50, 50, 100, 100);
        
        // 绘制填充的矩形
        g.setColor(Color.BLUE);
        g.fillRect(200, 50, 100, 100);
    }
}

public class MyFrame extends JFrame {
    public MyFrame() {
        add(new MyPanel());
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String[] args) {
        new MyFrame();
    }
}

B.Graphics2D

  Graphics2D类是Java中java.awt包中的一个类,它是Graphics类的子类,提供了更丰富和高级的图形绘制功能。Graphics2D类支持矢量图形和更高级的绘图操作,与Graphics相比,它提供了更多的控制选项和更丰富的功能。

  Graphics2D类的一些常见用法

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;

class MyPanel extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        
        // 将Graphics对象转换为Graphics2D对象
        Graphics2D g2d = (Graphics2D) g;
        
        // 绘制直线
        g2d.drawLine(50, 50, 150, 150);
        
        // 绘制圆形
        g2d.setColor(Color.RED);
        g2d.drawOval(200, 50, 100, 100);
    }
}

public class MyFrame extends JFrame {
    public MyFrame() {
        add(new MyPanel());
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String[] args) {
        new MyFrame();
    }
}

C.绘制一个图像

        可以使用GraphicsGraphics2D对象来绘制图像

D.绘制一个图形

例题1

例题2

绘制颜色与画笔属性

        以使用GraphicsGraphics2D对象来绘制颜色和定义画笔属性

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;

class ColorAndStrokePanel extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        
        // 将Graphics对象转换为Graphics2D对象
        Graphics2D g2d = (Graphics2D) g;

        // 设置颜色
        g2d.setColor(Color.BLUE);
        // 绘制填充的矩形
        g2d.fillRect(20, 20, 80, 80);

        // 设置颜色
        g2d.setColor(Color.RED);
        // 设置画笔宽度
        g2d.setStroke(new BasicStroke(5));
        // 绘制矩形边框
        g2d.drawRect(120, 20, 80, 80);
    }
}

public class ColorAndStrokeExample extends JFrame {

    public ColorAndStrokeExample() {
        add(new ColorAndStrokePanel());
        setSize(250, 150);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String[] args) {
        new ColorAndStrokeExample();
    }
}

设置颜色

使用 Color 类可以创建任意颜色的对象,不用担心平台是否支持该颜色,因为 Java 以跨平台和与硬件无关的方式支持颜色管理。创建 Color 对象的构造方法有如下两种:

Color col = new Color(int r, int g, int b)
Color col = new Color(int rgb)

设置画笔

Color类提供了一组预定义的颜色常量,

这些预定义的颜色常量包括但不限于:

  • Color.RED
  • Color.GREEN
  • Color.BLUE
  • Color.YELLOW
  • Color.ORANGE
  • Color.PINK
  • Color.CYAN
  • Color.MAGENTA
  • Color.BLACK
  • Color.WHITE
  • Color.GRAY
  • Color.LIGHT_GRAY
  • Color.DARK_GRAY

绘制文本

Java绘图类也可以用来绘制文本内容,且可以在绘制设置字体的样式、大小等。

设置字体

        可以使用Font类来设置字体的样式、大小和其他属性

  • Font类的构造函数接受三个参数:字体名称("Arial")、字体样式(Font.PLAINFont.BOLDFont.ITALIC、或它们的组合)、以及字体大小。
  • 使用g2d.setFont(font)方法来设置当前绘图上下文的字体。
  • g2d.drawString(text, x, y)方法用于在指定位置绘制文本。

E.显示文字

例题3

F.显示图片

drawimage(lmage img, int x, int y, lmageObserver observer)

        绘图类不仅可以绘制图形和文本,还可以使用 drawImage0方法将图片资源显示到绘图上下文中,而且可以实现各种特效处理,如图片的缩放、翻转等。有关图像处理的知识将在 19.6 节讲解,本节主要讲解如何显示图片。

例题4

G.图像处理

        开发高级的桌面应用程序,必须掌握一些图像处理与动画制作的技术,如在程序中显示统计图,销售趋势图、动态按钮等

放大与缩小

drawmage(lmage img, int x, int y, int width, int height, lmageObserver observer)

使用了 drawImage0方法将图片以原始大小显示在窗体中,要想实现图的放大与缩小,则需要使用它的重载方法。

例题5

图像翻转

        水平垂直翻转

图像旋转

        图像旋转

        theta 是指旋转的弧度
说明rotate0方法只接受旋转的弧度作为参数,可以使用 Math 类的 toRadians0)方法将角度转换为弧toRadians(方法接受角度值作为参数,返回值是转换完毕的孤度值。

rotate(double theta)

        需要调用 Graphics2D 类的 rotate0方法,该方法将根据指定的弧度旋转图像。

图像的翻转

需要使用 drawImage0方法的另一个重载方法。

drawimage(lmage img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, lmageObserver observer

图像倾斜

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/241073.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

天软基金经理因子定期报告(2023-12)

天软基金经理因子定期报告(2023-12)报告概要: 从投资业绩来看,葛兰长期业绩表现优于市场,任职以来年化收益率为12.714%,最大回撤为-53.460%。 从投资能力来看,其选股能力与收益择时能力较为突出…

发布 Whatsonchain 上的 BSV20 插件

我们发布了 whatsonchain 上的 BSV20 插件来验证 BSV20 代币。 对于任何交易,whatsonchain 都可以通过以下网址打开: https://whatsonchain.com/tx/{hash}我们使用此 bsv20 v21 交易 打开 Whatsonchain 。 打开whatsonchain后你会看到BSV20插件&#x…

阿里云国际跨境直播解决方案,视频AI创新营销模式丰富直播场景

据第三方咨询公司iiMedia Research预测,2017-2020年,视频直播行业一直处于高速发展阶段。2020年,视频直播行业市场收入超1万亿元,累计覆盖用户5.26亿。 视频直播的应用范围已从视频娱乐、电子商务等泛互联网行业扩展到在线教育、…

python算法例17 下一个稀疏数

1. 问题描述 如果一个数是稀疏数,则它的二进制表示中没有相邻的1,例如5(二进制表示为101)是稀疏数,但是6(二进制表示为110)不是稀疏数,本例将给出一个n,找出大于或等于n…

Backtrader 文档学习-Quickstart

Backtrader 文档学习-Quickstart 0. 前言 backtrader,功能十分完善,有完整的使用文档,安装相对简单(直接pip安装即可)。 优点是运行速度快,支持pandas的矢量运算;支持参数自动寻优运算&#x…

软件测试基础知识+面试总结(超详细整理)

一、什么是软件? 软件是计算机系统中的程序和相关文件或文档的总称。 二、什么是软件测试? 说法一:使用人工或自动的手段来运行或测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异…

yaml 文件格式

yaml文件:是一种标记语言,以竖列形式展示序列化的时间格式,可读性高 类似于json格式。语法简单。 yaml通过缩进来表示数据结构,连续的项目用-减号来表示。 yaml文件使用的注意事项: 1,大小写敏感 2&am…

深度学习环境配置------windows系统(GPU)------Pytorch

深度学习环境配置------windows系统(GPU)------Pytorch 准备工作明确操作系统明确显卡系列 CUDA和Cudnn下载与安装1.下载2.安装 环境配置过程1.安装Anacoda2.配置环境1)创建一个新的虚拟环境2)pytorch相关库的安装 2.安装VScode1&…

​Linux系列之yum安装​

yum是Linux系统的安装必备神器,简直不要太方便。但是新系统一般是不自带yum工具的,所以需要手动安装一下。 环境:Ubuntu sudo apt-get install yumsudo apt-get install rpm 环境:centos7 新建一个目录用来保存yum安装包 mk…

redis-学习笔记(Jedis 前置知识)

自定义的 Redis 客户端 咱们可以实现编写出一个自定义的 Redis 客户端 因为 Redis 公开了自己使用的自定义协议 ---- RESP 协议清楚了, 那么通信数据格式就清除了, 就能完成各层次之间的数据传输, 就能开发服务器和客户端 RESP — Redis 的 序列化 协议 特点: 简单好实现快读进…

HarmonyOS给应用添加弹窗

给您的应用添加弹窗 概述 在我们日常使用应用的时候,可能会进行一些敏感的操作,比如删除联系人,这时候我们给应用添加弹窗来提示用户是否需要执行该操作,如下图所示: 弹窗是一种模态窗口,通常用来展示用户…

安装odoo17 Windows版时,PostgreSQL Database无法被勾选

安装odoo17 Windows版时,PostgreSQL Database无法被勾选。 出现的原因是,曾经安装过PostgreSQL Database;虽然可能已被卸载,但注册表内还有残余信息,导致odoo认为PostgreSQL Database仍存在于系统之中。 解决方案 删…

MySQL笔记-第10章_创建和管理表

视频链接:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 文章目录 第10章_创建和管理表1. 基础知识1.1 一条数据存储的过程1.2 标识符命名规则1.3 MySQL中的数据类型 2. 创建和管理数据库2.1 创建数据库2.2 使…

用友系列之YonBuilder低代码平台概论和基本使用

文章目录 前言一、低代码平台是什么?二、用友的YonBuilder应用构建平台2.1.YonBuilder应用构建平台2.2.丰富的组件库和可视化设计器2.3.完善的应用全生命周期管理2.4.完善的学习社区 三、用友的YonBuilder应用构建平台实战3.1. 注册账号、登录3.2.进入开发者中心工作…

Fluter工具安装与环境搭建

1、下载 Flutter SDK,下载完成后,在需要放置SDK的地方解压即可。 注意: 请勿将 Flutter 有特殊字符或空格的路径下。请勿将 Flutter 安装在需要高权限的文件夹内,例如 C:\Program Files\。 2、配置环境变量 例如: …

MySQL笔记-第07章_单行函数

视频链接:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 文章目录 第07章_单行函数1. 函数的理解1.1 什么是函数1.2 不同DBMS函数的差异1.3 MySQL的内置函数及分类 2. 数值函数2.1 基本函数2.2 角度与弧度互换…

vue3若依框架,在页面中点击新增按钮跳转到新的页面,不是弹框,如何实现

在router文件中的动态路由数组中新增一个路由配置,这个配置的就是新的页面。 注意path不要和菜单配置中的路径一样,会不显示内容。 在菜单配置中要写权限标识就是permissions:[]里的内容 在children里的path要写占位符info/:data 点击新增按钮&#x…

ISP去噪(1)

#灵感# 因为理解的2DNR、3DNR 和当前调试平台标注的2DNR、3DNR 作用有很大差异,所以在网上广撒网,搜集知识。 目前收集出来一个这样的文章,有点像大学生的论文“取其精华,合成糟粕”。------权当一个记录册 目录 运动阈值&…

生成小程序URLlink链接遇到的坑

这里写自定义目录标题 前端生成小程序URL link背景用户打开小程序的常用方法短链接短链接优缺点优点缺点 生成短链接步骤 可能会遇到的问题:其他 注意📢 前端生成小程序URL link ![h5打开小程序](https://img-blog.csdnimg.cn/direct/a4cfe3ef6d184c6d9…

vue3 使用 Element-plus 的 el-pagination 分页组件时无法显示中文

使用element-puss框架,分页显示英文 解决方法 在main.ts element-puss,2.3.8版本后的, import zhCn from "element-plus/es/locale/lang/zh-cn"; element-puss,2.3.8版本以前的, import zhCn from "element-plus/lib/loc…