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

Java绘图技术

绘图原理:

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

1.paint(Graphics g)绘制组建的外观

2.repaint()刷新组件的外观

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

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

1.窗口最小化,再最大化

2.窗口的大小发生变化

3.repaint函数被调用

package com.TankGame.Draw;import javax.swing.*;
import java.awt.*;//演示在面板上画圆
public class DrawCircle extends JFrame{     //JFrame对应一个窗口,可以理解成是一个画框//定义一个面板private MyPanel mp = null;public static void main(String[] args) {new DrawCircle();}public DrawCircle(){    //构造器//初始化面板mp = new MyPanel();//把面板放入窗口(画框)this.add(mp);//设置窗口的大小this.setSize(400,300);//设置程序退出,当点击窗口的 × ,程序即退出this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置可视化(可以显示)this.setVisible(true);}
}
//1.先定义一个面板MyPanel(),继承JPanel类,画图形就在面板上画
class MyPanel extends JPanel{//说明:Graphics//MyPanel 对象就是一个画板(面板)//Graphics g 可以把g理解为一只画笔//Graphics 提供了很多绘图的方法@Overridepublic void paint(Graphics g) { //绘图方法super.paint(g);             //调用父类的方法,完成初始化//画出一个圆形g.drawOval(10,10,100,100);}
}

Graphics类可以理解为画笔,为我们提供了各种绘制图形的方法(jdk文档):

    @Overridepublic void paint(Graphics g) { //绘图方法super.paint(g);             //调用父类的方法,完成初始化//画出一个圆形g.drawOval(10,10,100,100);//演示绘制不同的图形//绘制直线g.drawLine(10,10,100,100);  //x y表示起点 x2 y2表示终点//绘制矩形边框g.drawRect(10,10,100,100);//绘制填充矩形g.setColor(Color.BLUE);//设置颜色g.fillRect(10,10,100,100);//填充椭圆g.setColor(Color.RED);g.fillOval(10,10,50,100);//画图片//获取图片资源Image image = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/s1.PNG"));// /表示在根目录g.drawImage(image,100,100,1491,765,this);//x,y表示坐标,后面的表示图片大小//画字符串  ----这里坐标对应的是左下角//1.给画笔设置颜色g.setColor(Color.RED);//2.设置字体g.setFont(new Font("隶书",Font.BOLD,50));//字体,是否粗体,大小g.drawString("泥嚎",100,100);}
                //火箭模型
//                g.fill3DRect(x + 100,y + 150,30,200,false);
//                g.fillOval(x + 15,y + 300,100,100);
//                g.fillOval(x + 130,y + 300,100,100);

*x=0,y=0

http://www.dtcms.com/a/614011.html

相关文章:

  • R语言基础(包含资料)
  • 系统思考:打破惯性
  • 数据结构入门 (十一):“自我平衡”的艺术 —— 详解AVL树
  • 网站建设html东莞浩智网站建设多少钱
  • 【工具】文件传输工具_wget·aria2·ssh·scp
  • Python-PDF文件生成水印
  • 站长之家官网查询电子商务网站开发教程论文
  • openGauss:多核时代企业级数据库的性能与高可用新标杆
  • C++ 中dynamic_cast使用详解和实战示例
  • Git笔记---简单介绍与基本使用
  • php网站开发项目经验如何写wordpress是什么软件
  • 手机网站排名优化软件怎么查网站开发者联系方式
  • 菲律宾有做网站的吗人人开发网站
  • 部署Cloudflare免费图床——免费开源强大
  • Vue Router 3 升级 4:写法、坑点、兼容一次讲透
  • JSP 、JSTL、MVC分层思想——以登录验证为例
  • 新操作系统。
  • Hutool-JSON 工具类超全使用指南:告别 JSON 处理繁琐操作
  • 445 端口(SMB 服务)完整渗透流程总结
  • 咔咔做受视频网站摄影师网站建设
  • 大连建设网网址是多少啊重庆seo网站设计
  • TDengine 字符串函数 POSITION 用户手册
  • 燕郊建设局网站网站排名首页前三位
  • Docker容器使用手册——进阶篇(下)
  • C++入门指南:开启你的编程之旅
  • 智取能量:如何最大化战斗分数?
  • php网站开发技术要点网站模板制作流程
  • 进程和诊断工具速查手册(8.13):VMMap / DebugView / LiveKd / Handle / ListDLLs 一页式现场排障清单
  • 【ros2】ROS2话题(Topic)通信完全指南:订阅与发布详解
  • 网站安全证书有问题如何解决网站地图如何做