Java绘图

JAVA绘图

原点在左上角 类似二维数组 单位是像素

像素是密度单位,不是长度单位,不是多少cm,没法比较

分辨率800*600,像素是480000个

定义:

定义一个Mypanel类,画纸

继承JPanel类,重写paint绘图方法(但是注意前面的调用父类的不要去掉,否则就是默认调用无参了)

paint方法有参数Graphics,可以将其当作画笔,其类提供了很多绘图的方法(画圆等)

创建画板类,使用这个类必须要继承JFrame类(框架类)-》画板

构造方法

初始化画纸(创建画纸对象);this.add(画纸对象)

设置窗口大小(this.setSize() )

设置可见this.setVisible(true)

设置点击 界面的x 就退出 setDefaultCloseOperation(JfRAME.EXIT_ON_CLOSE)

不设置这个main方法执行完,程序都不会退出

使用:创建画板对象就可以了

底层会自动创建一个单独的线程,其优先级低于main线程,所以一般是main线程执行完,才执行画图线程

而且此线程的退出不依赖主线程,主线程执行完了,其也不会退出,要按上面setDefaultCloseOperation设置

问题:paint没有调用就执行了

原因:

JComponent提供了2个和绘图有关的重要方法(JPanel是继承JCompinent的)

paint方法:绘制组件外观

repaint方法:刷新组件外观

下面情况会自动调用paint方法(底层有监听机制)

窗口最小化,再最大化(收到状态栏,再打开) 会调用一次

窗口大小发生变化(右上角打开关闭各一次,手动拉伸可能调用多次)

repaint方法被调用

Graphics类的方法 参数4个 前两个表示图形外切矩形的左上角;后两个表示图形的宽和高

drawLine画直线,画矩形边框,圆形边框(包括椭圆),画填充矩形/圆形

画图片

Image image = Toolkit.getDefaultToolkit().getImage(MyPanel.class.getResource("/bg.png"));

g.drawImage() 6个参数,第一个就是image,后面4个就是坐标,最后一个是this

这个路径要放在src目录下/要放在production的下一级目录下面,production下的一个文件夹就是一个项目

图片太大放不进去,jdk版本高也放不进去

画字符串-》就是写字

drawString,3参数 第一个是字符串,后面2个是开始坐标(字的左下角)

设置画笔字体,颜色

设置字体的方法的参数要是Font对象

相关推荐
wdfk_prog9 分钟前
嵌入式面试真题第 13 题:单硬件 Timer 下的高精度多路软件定时器架构设计
c语言·开发语言·面试·职场和发展·嵌入式
oort12322 分钟前
吃上了自家的细糠,还挺丝滑,用起来手感还行,OortCloud发布新版AI编程平台,下载 OortCodex,Token多,免费薅
大数据·开发语言·人工智能·ai编程
达子66628 分钟前
第9章_HarmonyOs图解 用Java开发UI
java·ui·harmonyos
slandarer35 分钟前
MATLAB | 泰勒图绘制,支持各种角度范围
开发语言·数学建模·matlab·nature·顶刊·泰勒图
mct1231 小时前
c++ iconv 字符utf-8转换gb2312失败
开发语言·c++
龙虾PRO2 小时前
能源与股票量化核心差异,AI全链路落地实操手册
java·面试·职场和发展
Marst Code2 小时前
Python 3.9 已停止维护!从 3.9 到 3.14 全版本深度对比,生产环境该选哪个?
开发语言·python
llwszx2 小时前
【Java/Go后端手撸原生Agent(第九篇):Plan-and-Execute规划模式——从“走一步看一步“到“先谋后动“】
java·python·golang·agent开发·plan模式·规划执行模式
ZJH__GO3 小时前
网络编程v2--多客户端互通
java·运维·服务器·开发语言·计算机网络
霸道流氓气质3 小时前
SpringBoot中基于 AES-GCM + KMS 密钥管理的数据加解密 Starter 实践
java·数据库·spring boot