java 绘图

文章目录

Java绘图

Java绘图类

绘图颜色与画笔属性

设置颜色

设置画笔

绘制文本

显示图片

图像处理

1、放大与缩小

2、图像翻转

3、图像旋转

4、图像倾斜

End

Java绘图

Java绘图是指在Java程序中创建和显示图形的过程。Java提供了许多类和方法来支持绘图。

Java绘图类

Java中主要的绘图类是Graphics类,它提供了基本的绘图方法和属性设置方法。

在这里插入图片描述

Graphics类的一些常用方法:

setColor(Color c):设置绘图颜色。

setFont(Font f):设置绘图字体。

drawRect(int x, int y, int width, int height):绘制矩形。

drawOval(int x, int y, int width, int height):绘制椭圆形。

drawPolygon(int[] xPoints, int[] yPoints, int nPoints):绘制多边形。

drawString(String str, int x, int y):绘制文本。

drawImage(Image img, int x, int y, int width, int height, ImageObserver observer):绘制图像。

在这里插入图片描述

示例:

package demo_1;

import sun.java2d.loops.DrawPath;

import javax.swing.*;

import java.awt.*;

public class text_1 extends JFrame {
    public text_1() throws HeadlessException {
        initialize();

    }

    public void initialize(){
        setSize(300,200);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setContentPane(new DrawPath());

        setTitle("芜湖");

    }

    class DrawPath extends JPanel{
        public void paint(Graphics g){
            g.drawOval(10,10,80,80);

            g.drawOval(80,10,80,80);

            g.drawOval(150,10,80,80);

            g.drawOval(50,70,80,80);

            g.drawOval(120,70,80,80);

        }

    }

    public static void main(String[] args) {
        new text_1().setVisible(true);

    }

}

Graphics2D类

Java中的Graphics2D类是Graphics类的扩展,提供了更高级的绘图功能和更灵活的绘图控制。Graphics2D类可以控制绘图颜色、线条粗细、填充方式等,并支持更复杂的图形绘制和渲染效果。

示例:

public class Mian{
    public static void main(String[] args) {
        JFrame jf=new JFrame("wuhu");

        jf.setSize(500,500);

        jf.add(new MyPanel());

        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        jf.setVisible(true);

    }

}

class MyPanel extends JPanel { // 定义一个名为 MyPanel 的类,继承自 JPanel 类,用于绘制图形

    public void paintComponent(Graphics g) { // 重写 JPanel 类中的 paintComponent 方法,用于绘制图形

        super.paintComponent(g); // 调用父类的 paintComponent 方法,进行默认的界面绘制

        // 获取 Graphics 对象并强制转换为 Graphics2D 对象

        Graphics2D g2d = (Graphics2D) g;

        // 设置绘图颜色为红色

        g2d.setColor(Color.RED);

        // 设置线条粗细为 2f

        g2d.setStroke(new BasicStroke(2f));

        // 绘制一个填充的矩形,左上角坐标为 (50,50),宽度为 100,高度为 100,填充颜色为红色

        g2d.fillRect(50, 50, 100, 100);

        // 设置绘图颜色为黑色

        g2d.setColor(Color.BLACK);

        // 设置字体为 Arial 字体,字号为 24

        g2d.setFont(new Font("Arial", Font.PLAIN, 24));

        // 绘制文本,文本内容为 "Hello World!",左上角坐标为 (100,150)

        g2d.drawString("Hello World!", 100, 150);

    }

}

绘图颜色与画笔属性

Java语言使用Color类封装颜色的各种颜色,并对颜色进行管理。另外,在绘制图形时还可以指定线的粗细和虚实等画笔属性。

设置颜色

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

绘图类可以使用setColor()方法设置当前颜色。语法如下:

setColor(Color color); // 设置当前颜色

1

Color类提供了多个构造方法,以下为常用的构造方法。

在这里插入图片描述

Color类还提供了多个常量表示常用颜色。

在这里插入图片描述

具体查看JavaApi文档。

设置画笔

默认情况下,Graphics类使用的画笔属性是粗细为1个像素的正方形,而Graphics2D类可以调用setStroke()方法设置画笔的属性,如改变线条的粗细、虚实,定义线段端点的形状,风格等。

格式如下:

setStroke(Stroke stroke);

1

设置笔刷

setPaint(Paint p): 此方法用于设置画笔的刷子。参数p是一个Paint对象,表示所需的刷子。可以使用Color对象创建Paint对象。

设置粗细

setStroke(Stroke s): 此方法用于设置画笔的线条粗细。参数s是一个Stroke对象,表示所需的线条样式。可以使用BasicStroke类创建不同的线条样式。

绘制文本

在Java中,可以使用Graphics或Graphics2D类来绘制文本。这些类提供了许多方法来设置文本的字体、大小、颜色等属性,以及绘制文本的位置和内容。

常用方法

setFont(Font f): 此方法用于设置文本的字体。参数f是一个Font对象,表示所需的字体。可以使用Font类的静态常量来创建字体对象,也可以使用构造函数来创建自定义字体对象。

setColor(Color c): 此方法用于设置文本的颜色。参数c是一个Color对象,表示所需的颜色。可以使用Color类的静态常量来创建颜色对象,也可以使用构造函数来创建自定义颜色对象。

drawString(String str, int x, int y): 此方法用于绘制文本。参数str是要绘制的文本,x和y是文本的左上角坐标。

drawChars(char[] chars, int offset, int length, int x, int y): 此方法用于绘制字符数组中的一部分字符。参数chars是字符数组,offset是开始绘制的偏移量,length是绘制的字符数,x和y是文本的左上角坐标。

drawString(AttributedString as, float x, float y): 此方法用于绘制具有附加属性的文本。参数as是一个AttributedString对象,表示具有附加属性的文本,x和y是文本的左上角坐标。附加属性可以包括字体、颜色、大小等属性。

示例:

package demo_1;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.util.Date;

import java.awt.geom.Rectangle2D;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class text_1 extends JFrame{
    public text_1() {
        setSize(230,140);//设置窗体大小

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗体关闭模式

        add(new CanvasPanel());//设置窗体面板为绘图面板对象

        setTitle("绘图文本");//设置窗体标题

    }

    class CanvasPanel extends JPanel{
        public void paint(Graphics g) {
            Graphics2D g2=(Graphics2D) g;

            Rectangle2D rect=new Rectangle2D.Double(10, 10, 200, 80);

            g2.setColor(Color.CYAN);//设置当前绘图颜色

            g2.fill(rect);//填充矩形

            Font font=new Font("宋体",Font.BOLD,16);

            g2.setColor(Color.BLUE);//设置当前绘图颜色

            g2.setFont(font);//设置字体

            g2.drawString("现在时间是", 20, 30);//绘制文本

            Date date=new Date();
 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

干掉讨厌的 CPU 限流,让容器跑得更快

简介: 让人讨厌的 CPU 限流影响容器运行,有时人们不得不牺牲容器部署密度来避免 CPU 限流出现。本文介绍的 CPU Burst 技术可以帮助您既能保证容器运行服务质量,又不降低容器部署密度。文章分为上下两篇,该文为上篇,下…

微弱信号检测_机动车检测线常用传感器介绍

机动车检测线中经常会运用到各种传感器,这些传感器相当于车辆检测系统的“眼睛”、“鼻子”和“耳朵”,通过台体装置和装在台体中的传感器,能够把车辆的性能数据转换成计算机系统能够识别的信号,供计算机处理和计算,最…

赋能开发者,英特尔发布oneAPI 2022工具包

英特尔发布了oneAPI 2022工具包。此次发布的最新增强版工具包扩展了跨架构开发的特性,为开发者提供更强的实用性和更丰富的架构选择,用以加速计算。 英特尔公司首席技术官、高级副总裁、软件和先进技术事业部总经理 Greg Lavender表示:“我十…

php 自带多进程,php多进程实现

php多进程实现PHP有一组进程控制函数(编译时需要–enable-pcntl与posix扩展),使得php能在nginx系统中实现跟c一样的创建子进程、使用exec函数执行程序、处理信号等功能。CentOS 6 下yum安装php的,默认是不安装pcntl的,因此需要单独编译安装&a…

Quick BI V4.0功能“炸弹”来袭,重磅推出即席分析、模板市场、企业微信免密登录等强势功能

简介: 2021年7月,Quick BI公共云版本迭代新功能:重磅推出即席分析、模板市场,分析门槛再降低;推出企业微信无缝对接,移动端类目个性配置及管理提升多端能力;数据建模配置交互升级至拖拽模式提升…

打印速度快点的打印机_瞒着领导偷偷给你们发两台打印机

前几次小粉笔组织的活动都被“投诉”!说我们打印机太少~小粉笔心领神会,在这个月的活动预算费用上悄咪咪加了【两台打印机】~(看小粉笔多疼你们!)希望知道的笔芯不要把这条推文转发给我领导(要不然你们以后就没有打印机了~哼!)现在…

数据库误操作后悔药来了:AnalyticDB PostgreSQL教你实现分布式一致性备份恢复

简介: 本文将介绍AnalyticDB PostgreSQL版备份恢复的原理与使用方法。 一、背景 AnalyticDB PostgreSQL版(简称ADB PG)是阿里云数据库团队基于PostgreSQL内核(简称PG)打造的一款云原生数据仓库产品。在数据实时交互式…

与变异风险词赛跑 阿里探索AI治理网络风险

最近,阿里安全一线风控小二可粒发现,在禁售的风险防控库里,有人试图“上新”新品种,不法份子借助在社交媒体上走红的“魔法改运”等说辞,引人入玄学骗局。 尽量提前发现风险问题,提早布防是阿里安全风控部…

手机网页播放器php,html5手机移动端视频播放代码插件

js代码//document.documentElement.style.overflowhidden;document.body.style.overflowhidden;zymedia(video,{autoplay: true});var screenheight window.screen.height/2;$("#modelView").width(window.screen.width);$("#modelView").height(window.s…

高效研发运维体系构建的流程和方法论

简介: 云计算产品大多都会与云原生发生关联,云原生正在重塑整个软件的生命周期。但到底什么是云原生?云原生带来的最大技术创新和未来机会是什么?围绕云原生,是否可以构建出一套云上的开发&运维体系,打…

Colima:MacOS 上的极简容器运行时和 Kubernetes

作者 | Addo Zhang来源 | 云原生指北Colima 是一个以最小化设置来在MacOS上运行容器运行时和 Kubernetes 的工具。支持 m1,同样也支持 Linux。Colima 的名字取自 Container on Lima。Lima 是一个虚拟机工具,可以实现自动的文件共享、端口转发以及 contai…

当容器应用越发广泛,我们又该如何监测容器?

简介: 随着容器技术蓬勃发展与落地推行,越来越多企业的业务运行于容器中。作为主流部署方式之一,容器将团队的任务和关注点分割开,开发团队只需关注应用程序逻辑和依赖项,而运维团队只需关注部署和管理,无需…

lamp安全审计之php代码审计_paper,PHP实战开发及代码审计之PHP代码审计

{getUnitName}{getLessonName}敬请期待免费{getTaskName}剩余观看时长:{watchLimitRemaining}回放{activityStartTimeStr}正在直播中直播结束{activityLength}免费{getTaskName}敬请期待{"id": "1619","isDefault": "1",&q…

内含福利|CSDN携手字节跳动:云原生Meetup北京站报名热烈启动,1月8日见!

伴随云原生技术的成熟与落地,越来越多框架、中间件等开源项目相继涌现,帮助开发者和企业有效解决业务问题。2022年1月8日,CSDN携手字节跳动基础架构,将在北京举办第四场云原生线下Meetup。在这里,您可以与众多开源技术…

Flink CDC 2.0 正式发布,详解核心改进

简介: 本文由社区志愿者陈政羽整理,内容来源自阿里巴巴高级开发工程师徐榜江 (雪尽) 7 月 10 日在北京站 Flink Meetup 分享的《详解 Flink-CDC》。深入讲解了最新发布的 Flink CDC 2.0.0 版本带来的核心特性,包括:全量数据的并发…

php里的utf-8编码,php – 修复损坏的UTF-8编码

我正在修复一些糟糕的UTF-8编码.我目前正在使用PHP 5和MySQL.在我的数据库中,我有一些不良编码的实例,如:ƒ>数据库排序规则是utf8_general_ci> PHP正在使用正确的UTF-8标头>记事本设置为使用不带BOM的UTF-8>数据库管理在phpMyAdmin处理>并非所有重音…

unity三维地图的经纬度如何在二维地图上表示_接入C++版本recastnavigation寻路库到Unity/服务端中...

前言因为Unity版本的更新迭代,老版本的A*插件在新版本Unity已经无法正常使用,包括一些运行时代码也已经过时,重新接入要花费很多时间,干脆接入一个新的寻路方案吧。这里选择的是久负盛名的https://github.com/recastnavigation/re…

Dataphin功能:集成——如何将业务系统的数据抽取汇聚到数据中台

简介: 数据集成是简单高效的数据同步平台,致力于提供具有强大的数据预处理能力、丰富的异构数据源之间数据高速稳定的同步能力,为数据中台的建设打好坚实的数据基座。 数据中台是当下大数据领域最前沿的数据建设体系, 它并不是从零开始, 无中…

5G专网,路在何方?

作者 | 蜉蝣采采来源 | 无线深海话说你平常打电话、刷视频、玩游戏的4G和5G,一般也被叫做“公网”。这个“公”字的含义正是公开,公用的意思。也就是说,这个网络,不但你能用,你隔壁的张三也能用,张三的老乡…

如何开发 Node.js Native Add-on?

简介: 来一起为 Node.js 的 add-on 生态做贡献吧~ 作者 | 吴成忠(昭朗)这篇文章是由 Chengzhong Wu (legendecas),Gabriel Schulhof (gabrielschulhof) ,Jim Schlight (jimschlight),Kevin Eady,Michael Dawson (mhdaw…