当前位置: 首页 > news >正文

【Java学习笔记】Java绘图基础

Java绘图基础

一、Java 坐标体系

1. 像素的概念

2. 坐标

在这里插入图片描述

横坐标:x

纵坐标:y

坐标原点:位于左上角

距离:表示距离原点有多少个像素单位


二、绘图方法

1. 绘图原理

Component 类提供了两个和绘图相关最重要的方法

当组件第一次在屏幕显示的时候,程序会自动的调用 paint()方法来绘制组件。

在以下情况 paint()将会被调用

2. 绘制画板

类:JPanel

自定义类继承该类,重载 paint 构造器,调用父类的方法完成构造器的初始化(画一个圆为示例

class MyPanel extends JPanel{@Overridepublic void paint(Graphics g) {super.paint(g);g.drawOval(150,50,100,100);}
}

代码解析

  • Graphics是一个类,可以理解为画笔,通过调用该类中的方法来完成绘图

  • 调用该类中的drawOval()方法,绘制一个圆形

  • 画圆的方法:首先根据坐标找到对应的位置,从该坐标点开始,按照给定的长度和宽度开始画圆(如果长宽不一致就是椭圆)

3. 绘制窗口,显示画板内容

类:JFrame

让主类继承该类,创建画板对象,在该类的构造器中完成窗口的初始化并添加画板

窗口的构建步骤、

运行查看效果:在主函数中创建一个窗口对象,第一次会自动调用 paint()方法完成绘图(前面的绘图原理)

public class drawcircle extends JFrame{// 定义一个panelMyPanel panel = null;// 窗口的初始化,在构造器中完成public drawcircle(){// 初始化画板panel = new MyPanel();// 添加画板到窗口中this.add(panel);// 设置窗口大小this.setSize(400,300);// 设置窗口可见this.setVisible(true);// 设置关闭窗口,程序结束this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public static void main(String[] args) {new drawcircle();}
}

绘图效果

在这里插入图片描述

4. Graphics 类方法

方法描述
setColor(Color c)设置绘图颜色。使用 Color 类指定颜色
setFont(Font font)设置字体。使用 Font 类指定字体样式
drawLine(int x1, int y1, int x2, int y2)绘制一条线段,连接指定的两个坐标点 (x1, y1)(x2, y2)
drawRect(int x, int y, int width, int height)绘制矩形,指定矩形的左上角 (x, y) 和宽度、高度。
fillRect(int x, int y, int width, int height)绘制并填充矩形,指定矩形的左上角 (x, y) 和宽度、高度。
drawOval(int x, int y, int width, int height)绘制椭圆,指定椭圆的外接矩形的左上角 (x, y) 和宽度、高度。
fillOval(int x, int y, int width, int height)绘制并填充椭圆,指定椭圆的外接矩形的左上角 (x, y) 和宽度、高度。
drawString(String str, int x, int y)在指定位置 (x, y) 绘制文本字符串。
drawImage(Image img, int x, int y, ImageObserver observer)在指定位置 (x, y) 绘制图片

(1)绘制直线:传入起始坐标和终点坐标

(2)绘制矩形边框:传入起始坐标,传入矩形的长和宽

(3)填充矩形颜色:需要在绘制前设置矩形颜色(默认是黑色)

方法:setColor(Color.颜色名)

class MyPanel extends JPanel{@Overridepublic void paint(Graphics g) {super.paint(g);System.out.println("paint方法被调用");g.setColor(Color.lightGray);g.fillRect(50,50,100,100);}
}

(4)绘制椭圆边框,填充椭圆边框的方法大同小异,这里不做赘述

(5)绘制文本字符串

字体样式

字段描述
Font.PLAIN普通字体,默认样式,没有加粗和斜体效果。
Font.BOLD粗体样式,文本加粗,通常用于强调文本。
Font.ITALIC斜体样式,文本倾斜,用于表示风格或突出显示部分文本。
Font.BOLD + Font.ITALIC粗斜体样式,文本既加粗又倾斜,通常用于非常显眼的文本。
class MyPanel extends JPanel{@Overridepublic void paint(Graphics g) {super.paint(g);System.out.println("paint方法被调用");g.setColor(Color.lightGray);  // 灰色g.setFont(new Font("楷体",Font.PLAIN,100));g.drawString("Java",70,150);}
}

(6)绘制图片

准备工作:把图片放在 out 文件夹下的项目的根目录(易错:如果有多个包时,不是放在对应的包下,而是该项目名称的根目录下)

绘制步骤

class MyPanel extends JPanel{@Overridepublic void paint(Graphics g) {super.paint(g);System.out.println("paint方法被调用");Image image = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/image.png"));g.drawImage(image,0,0,100,140,this);}
}
http://www.lryc.cn/news/571970.html

相关文章:

  • 【学习笔记】2.2 Encoder-Decoder
  • Neo4j 入门到精通(Cypher语言详解)
  • 湖北理元理律师事务所小微企业债务重组方案:司法与经营的共生逻辑
  • b站视频如何下载到电脑上
  • jupter 如何修改文件位置
  • 【AI Study】第四天,Pandas(8)- 最佳实践
  • 湖北理元理律师事务所债务优化模型:法律与生活的平衡之道
  • 《汇编语言:基于X86处理器》第2章 x86处理器架构
  • 《仿盒马》app开发技术分享--未完成订单列表展示逻辑优化(61)
  • 机器学习常用评估指标
  • springboot使用nacos注册中心、配置中心的例子
  • C/Fortran多核并行计算
  • (LeetCode 面试经典 150 题 ) 26. 删除有序数组中的重复项 (双指针)
  • A 股无风不起浪!金融吸血科技
  • 黑马python(八)
  • 利用 Nginx 实现灰度环境的 H5 应用发布策略
  • 将iOS上架流程融入DevOps体系:从CI构建到App Store发布的完整实践
  • 嵌入式之硬件学习(三)通信方式、串口通信
  • PostgreSQL的扩展autoinc
  • Mac 安装 VMware Fusion
  • YOLOv11改进系列---Conv篇---2024最新深度可分卷积与多尺度卷积结合的模块MSCB助力yolov11有效涨点
  • macos电脑本地搭建mistral-7b大模型出现4-bit量化和缓存不足问题的记录
  • 蓝牙版本演进史:从 1.0 到 5.4 的技术突破 —— 面试高频考点与历年真题详解
  • C#List的join查询
  • Uniapp 中 onShow 与 onLoad 的执行时机解析
  • 【JAVA】的SPI机制
  • new()和new[]有什么区别?
  • tomcat 配置规范
  • springboot入门之路(一)
  • 【软考高级架构设计师】——2024年下半年软考真题(回忆版)