绘图原理:
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