Java绘图技术

绘图原理:

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

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

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

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

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

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

2.窗口的大小发生变化

3.repaint函数被调用

java 复制代码
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 提供了很多绘图的方法
    @Override
    public void paint(Graphics g) { //绘图方法
        super.paint(g);             //调用父类的方法,完成初始化
        //画出一个圆形
        g.drawOval(10,10,100,100);
    }
}

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

java 复制代码
    @Override
    public 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);
    }
java 复制代码
                //火箭模型
//                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

相关推荐
50084几秒前
昇腾 CANN 的五层架构,到底分了哪五层
java·人工智能·分布式·架构·ocr·wpf
摇滚侠11 分钟前
Java 零基础全套教程,File 类与 IO 流,笔记 177-178
java·开发语言·笔记
ytttr87329 分钟前
OPC UA 协议栈 C 语言实现
c语言·开发语言·mfc
song50130 分钟前
Ascend C 算子开发:从入门到上手
c语言·开发语言·图像处理·人工智能·分布式·flutter·交互
小a杰.1 小时前
Ascend C编程语言进阶:高性能算子开发技巧
android·c语言·开发语言
全糖可乐气泡水1 小时前
Codex适配国产信创环境安装部署与技术适配全解析
开发语言·git·python·算法·百度
雨落在了我的手上1 小时前
初始java(十):类和对象(⼆)
java·开发语言
LeocenaY1 小时前
搜集的一些测开面试题
开发语言·python
threelab1 小时前
Three.js 加载 3D Tiles 瓦片数据 | 三维可视化 / AI 提示词
开发语言·前端·javascript·人工智能·3d·着色器
莫雪歌1 小时前
Java AI 应用开发实践:基于 Spring Boot 实现 Chat、Memory、RAG 与 Tool Calling
java·aigc