> 文档中心 > 【Java】绘图入门和机制,绘图方法演示(绘制坦克)

【Java】绘图入门和机制,绘图方法演示(绘制坦克)

目录

  • 1.绘图入门(绘制一个圆)
  • 2.绘图方法
    • 1.//画直线
    • 2.//画矩形边框
    • 3.//画椭圆边框
    • 4.//填充矩形 (设置画笔的颜色)
    • 5.//填充椭圆
    • 6.//画图片
    • 7.//画字符串
  • 3.绘制坦克
    • 1.创建父类坦克
    • 2.创建子类主角坦克
    • 定义画板画出坦克
    • 4.创建坦克对象
    • 坦克演示结果

1.绘图入门(绘制一个圆)

1.第一步

//1.先定义一个Mypanel,继承JPanel,画图行就在面板上画。
//Mypanel可以理解为一个画板
//Graphics可以理解为一个画笔,提供了很多绘图的方法

class MyPanel extends JPanel{    @Override    public void paint(Graphics g) {//绘图方法 super.paint(g);//调用父类方法完成初始化,保留 g.drawOval(10,10,100,100);    }}

2.第二步
//定义一个面板
private MyPanel mp=null;

3.第三步

public drawCircle(){
//初始化面板
mp=new MyPanel();
//把面板放人窗口
this.add(mp);
//设置窗口大小
this.setSize(400,300);
this.setVisible(true);
}

package com.draw;import javax.swing.*;import java.awt.*;/ * @version 1.0 * @auther Demo龙 *///演示如何在面板上画出圆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,画图行就在面板上画。//Mypanel可以理解为一个画板//Graphics可以理解为一个画笔,提供了很多绘图的方法class MyPanel extends JPanel{    @Override    public void paint(Graphics g) {//绘图方法 super.paint(g);//调用父类方法完成初始化,保留 g.drawOval(10,10,100,100);    }}

//当点击窗口小叉,程序完全退出。
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

演示结果
【Java】绘图入门和机制,绘图方法演示(绘制坦克)

2.绘图方法

package com.draw;import javax.swing.*;import java.awt.*;/ * @version 1.0 * @auther Demo龙 *///演示如何在面板上画出圆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,画图行就在面板上画。//Mypanel可以理解为一个画板//Graphics可以理解为一个画笔,提供了很多绘图的方法class MyPanel extends JPanel{    @Override    public void paint(Graphics g) {//绘图方法 super.paint(g);//调用父类方法完成初始化,保留 //g.drawOval(10,10,100,100); //演示绘制不同的图形.. //画直线 drawLine(int x1,int y1,int x2,int y2) //g.drawLine(10, 10, 100, 100); //画矩形边框 drawRect(int x, int y, int width, int height) //g.drawRect(10, 10, 100, 100); //画椭圆边框 drawOval(int x, int y, int width, int height) //填充矩形 fillRect(int x, int y, int width, int height) //设置画笔的颜色 //g.setColor(Color.blue); //g.fillRect(10, 10, 100, 100); //填充椭圆 fillOval(int x, int y, int width, int height) // g.setColor(Color.red); //g.fillOval(10, 10, 100, 100); //画图片 drawImage(Image img, int x, int y, ..) //1. 获取图片资源, /bg.png 表示在该项目的根目录去获取 bg.png 图片资源 Image image = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/QQ图片20211130145347.jpg")); g.drawImage(image, 10, 10, 320, 221, this); //画字符串 drawString(String str, int x, int y)//写字 //给画笔设置颜色和字体 //g.setColor(Color.black); //g.setFont(new Font("宋体", Font.BOLD, 40)); //这里设置的 100, 100, 是 "北京你好"左下角 //g.drawString("Demo龙", 100, 100); //设置画笔的字体 setFont(Font font) //设置画笔的颜色 setColor(Color c)    }}

1.//画直线

drawLine(int x1,int y1,int x2,int y2)
//g.drawLine(10, 10, 100, 100);
演示结果
【Java】绘图入门和机制,绘图方法演示(绘制坦克)

2.//画矩形边框

drawRect(int x, int y, int width, int height)
//g.drawRect(10, 10, 100, 100);
【Java】绘图入门和机制,绘图方法演示(绘制坦克)

3.//画椭圆边框

drawOval(int x, int y, int width, int height)
【Java】绘图入门和机制,绘图方法演示(绘制坦克)

4.//填充矩形 (设置画笔的颜色)

fillRect(int x, int y, int width, int height)
//设置画笔的颜色
//g.setColor(Color.blue);
//g.fillRect(10, 10, 100, 100);
【Java】绘图入门和机制,绘图方法演示(绘制坦克)

5.//填充椭圆

fillOval(int x, int y, int width, int height)
// g.setColor(Color.red);
//g.fillOval(10, 10, 100, 100);
【Java】绘图入门和机制,绘图方法演示(绘制坦克)

6.//画图片

drawImage(Image img, int x, int y, …)
//1. 获取图片资源, /bg.png 表示在该项目的根目录去获取 bg.png 图片资源
//Image image = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource(“/QQ图片20211130145347.jpg”));
//g.drawImage(image, 10, 10, 320, 221, this);
【Java】绘图入门和机制,绘图方法演示(绘制坦克)

7.//画字符串

drawString(String str, int x, int y)//写字
//给画笔设置颜色和字体
//g.setColor(Color.black);
//g.setFont(new Font(“宋体”, Font.BOLD, 40));
//这里设置的 100, 100, 是 "Demo龙"左下角
//g.drawString(“Demo龙”, 100, 100);
//设置画笔的字体 setFont(Font font)
//设置画笔的颜色 setColor(Color c)
【Java】绘图入门和机制,绘图方法演示(绘制坦克)

3.绘制坦克

1.创建父类坦克

package com.tankgame01;/ * @version 1.0 * @auther Demo龙 */public class Tank {    private int x;//坦克横坐标    private int y;//坦克纵坐标    public Tank(int x, int y) { this.x = x; this.y = y;    }    public int getX() { return x;    }    public void setX(int x) { this.x = x;    }    public int getY() { return y;    }    public void setY(int y) { this.y = y;    }}

2.创建子类主角坦克

package com.tankgame01;/ * @version 1.0 * @auther Demo龙 *///主角坦克public class Hero extends Tank{    public Hero(int x, int y) {//构造器 super(x, y);    }}

定义画板画出坦克

package com.tankgame01;import javax.swing.*;import java.awt.*;/ * @version 1.0 * @auther Demo龙 *///坦克大战的绘图区域public class MyPanel extends JPanel {    //定义我的坦克    Hero hero=null;    public MyPanel() { hero =new Hero(100,100);//初始胡自己的坦克    }    @Override    public void paint(Graphics g) { super.paint(g); g.fillRect(0,0,1000,750);//填充矩形默认黑色 //画出坦克封装方法。 drawtank(hero.getX(),hero.getY(),g,0,0);    }    /     * @param x      坦克的左上角x坐标     * @param y      坦克的左上角y坐标     * @param g      画笔     * @param direct 坦克方向(上下左右)     * @param type   坦克类型     */    //编写方法,封装坦克    public void drawtank(int x,int y,Graphics g,int direct,int type){ switch (type){     case 0://我们的坦克  g.setColor(Color.cyan);  break;     case 1://敌人的坦克  g.setColor(Color.yellow);  break; } switch (direct) {     case 0://我们的坦克  g.fill3DRect(x, y, 10, 60, false);  g.fill3DRect(x + 30, y, 10, 60, false);//画出坦克右边轮子  g.fill3DRect(x + 10, y + 10, 20, 40, false);//画出坦克盖子  g.fillOval(x + 10, y + 20, 20, 20);//画出圆形盖子  g.drawLine(x + 20, y + 30, x + 20, y);//画出炮筒  break;     default:  System.out.println("暂时没有处理"); }    }}

4.创建坦克对象

package com.tankgame01;import javax.swing.*;/ * @version 1.0 * @auther Demo龙 */public class tankgame01 extends JFrame {    //定义MyPanel    MyPanel mp=null;    public static void main(String[] args) { new tankgame01();    }    public tankgame01() { mp=new MyPanel(); this.add(mp); this.setSize(1000,750); //当点击窗口小叉,程序完全退出。 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true);//可以显示    }}

坦克演示结果

【Java】绘图入门和机制,绘图方法演示(绘制坦克)

麦克风网