Java绘图技术

坐标体系介绍

下图说明了Java坐标系。坐标原点位于左上角,以像素为单位。在Java坐标系中,第一
个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当
前位置为垂直方向,距离坐标原点y个像素。

请添加图片描述

坐标体系-像素

  1. 绘图还必须要搞清个非常重要的概念像素一个像素等于多少厘米?
  2. 计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的。例如,计算机显示
    器的分辨率是800x 600,表示计算机屏幕上的每一行由800个 点组成,共有600行,
    整个计算机屏幕共有480 000个像素。像素是一个密度单位,而厘米是长度单位,两
    者无法比较

绘图原理

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

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

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

当组件第一次在屏幕显示的时候,程序会 自动的调用paint()方法来绘制组件。
在以下情况paint()将会被调用:

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

  2. 窗口的大小发生变化

  3. repaint函数被调用

Graphics类

Graphics类可以理解就是画笔,为我们提供了各种绘制图形的方法:[可以参考jdk帮助文档]

  1. 画直线drawLine(int x1 ,int y1,int x2,int y2)

  2. 画矩形边框drawRect(int x, int y, int width, int height)

  3. 画椭圆边框drawOval(int x, int y, int width, int height)

  4. 填充矩形fillRect(int x, int y, int width, int height)

  5. 填充椭圆fillOval(int x, int y, int width, int height)

  6. 画图片drawlmage(Image img, int x, int y, .)

  7. 画字符串drawString(String str, int x, int y)

  8. 设置画笔的字体setFont(Font font)

  9. 设置画笔的颜色setColor(Color c)

演示:

package www.xz.draw;

import javax.swing.*;
import java.awt.*;

/**
 * @author 许正
 * @version 1.0
 * 演示如何在面板上画出圆形
 */
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);
        //当点击窗口的close时,程序退出
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);//可以显示
    }
}

//1.先定义一个MyPaneL,继承JPanel类,画图形,就在面板上画
class MyPanel extends JPanel {
    //1. MyPaneL 对象就是一个画板
    //2. Graphics g把g理解成一 支画笔
    //3. Graphics 提供了很多绘图的方法
    //Graphics g


    @Override
    public void paint(Graphics g) {//绘图方法
        super.paint(g);//调用父类的方法完成初始化
//        System.out.println("paint()方法被调用...");
        //画一个圆形
        g.drawOval(10, 10, 100, 100);

        //演示绘制不同的图形
//        1. 画直线drawLine(int x1 ,int y1,int x2,int y2)
        g.drawLine(10, 10, 100, 100);
//        2. 画矩形边框drawRect(int x, int y, int width, int height)
        g.drawRect(10, 10, 50, 50);
//        3. 画椭圆边框drawOval(int x, int y, int width, int height)
//        4. 填充矩形fillRect(int x, int y, int width, int height)
        g.setColor(Color.green);
        g.fillRect(60, 60, 10, 10);
//        5. 填充椭圆fillOval(int x, int y, int width, int height)
        g.setColor(Color.red);
        g.fillOval(70, 70, 20, 20);
//        6. 画图片drawImage(Image img, int x, int y, .)
        Image image = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/wxxz.jpg"));
        g.drawImage(image, 110, 110, 800, 600, this);
//        7. 画字符串drawString(String str, int x, int y)
//        8. 设置画笔的字体setFont(Font font)
//        9. 设置画笔的颜色setColor(Color c)
        g.setColor(Color.CYAN);
        g.setFont(new Font("宋体", Font.BOLD, 50));
        g.drawString("郑州你好!", 200, 200);

    }
}

绘出坦克

一些游戏中如坦克大战游戏中,我们会用到坦克,现在我们就利用java绘图技术来画出一个小坦克,完成
我们的坦克大战游戏1.0版本!

请添加图片描述

java事件处理机制

基本说明

java事件处理是采取"委派事件模型"。当事件发生时,产生事件的对象,会把此"信息"传递
给"事件的监听者”处理,这里所说的"信息"实际上就是java.awt.event事件类库里某个
类所创建的对象,把它称为"事件的对象"

示意图

请添加图片描述

机制分析

请添加图片描述

事件处理机制深入理解

  1. 前面我们提到几个重要的概念事件源,事件,事件监听器我们下面来全面的介绍它们。

  2. 事件源:事件源是个产生事件的对象, 比如按钮,窗口等。

  3. 事件:事件就是承载事件源状态改变时的对象,比如当键盘事件、鼠标事件、窗口事件
    等等,会生成一个事件对象,该对象保存着当前事件很多信息,比如KeyEvent对象有
    含有被按下键的Code值。java.awt.event包 和javax.swing.event包中定义了各种事件类型

  4. 事件类型:查阅jdk文档

请添加图片描述

  1. 事件监听器接口:
    1. 当事件源产生一个事件,可以传送给事件监听者处理
    2. 事件监听者实际上就是一个类,该类实现了某个事件监听器接口
      比如前面我们案例中的MyPanel就是一个类,它实现了
      KeyListener接口,它就可以作为一个事件监听者,对接受到的事件进行处理
    3. 事件监听器接口有多种,不同的事件监听器接口可以监听不同的
      事件一个类可以实现多个监听接口
    4. 这些接口在java.awt.event包和javax.swing.event包中定义。
      列出常用的事件监听器接口,查看jdk文档聚集了.
  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员正正

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值