Java—绘图技术

  • Post author:
  • Post category:java

目录

一、Java绘图坐标体系

1.1 坐标体系—介绍

1.2 坐标体系—像素

二、绘图原理

三、Graphics类


一、Java绘图坐标体系

1.1 坐标体系—介绍

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

1.2 坐标体系—像素

        计算在屏幕上显示的内容都是由屏幕上的每一个像素组成的。例如:计算机显示器的分辨率是800*600,表示计算机屏幕上的每一行由800个点组成,共有600行,整个计算机屏幕共有480000个像素。像素是一个密度单位,而厘米是长度单位,两者无法进行比较。

二、绘图原理

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

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

        ② repaint()刷新组件的外观

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

3. 在以下情况paint()将会被调用

        ①窗口最小化,再最大化

        ②窗口的大小发生变化

        ③repaint函数被调用

package com.learn.draw;

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

/**
 * @author 咕咕猫
 * @version 1.0
 * 演示如何在面板上画出圆形
 */
@SuppressWarnings({"all"})
public class DrawCircle extends JFrame{ //JFrame对应窗口,可以理解成一个画框
    //面板是要放进画框里的,所以先定义一个面板
    private MyPanel mp = null;
    public static void main(String[] args) {
        new DrawCircle();
        System.out.println("退出程序~");
    }

    //构造器
    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{

    //说明
    //1.MyPanel 对象可以理解成一个画板
    //2.Graphics g 把g理解成一支画笔
    //3.Graphics 提供了很多绘图的方法
    @Override
    public void paint(Graphics g) { //绘图方法
        super.paint(g);//调用父类的方法完成初始化
        //System.out.println("paint方法被调用");
        //画出一个圆形
        g.drawOval(10,10,100,100);
    }
 
}

三、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.画图片 drawImage(Image img, int x,int y,…)

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

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

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

package com.learn.draw;

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

/**
 * @author 咕咕猫
 * @version 1.0
 * 演示如何在面板上画出圆形
 */
@SuppressWarnings({"all"})
public class DrawCircle extends JFrame{ //JFrame对应窗口,可以理解成一个画框
    //面板是要放进画框里的,所以先定义一个面板
    private MyPanel mp = null;
    public static void main(String[] args) {
        new DrawCircle();
        System.out.println("退出程序~");
    }

    //构造器
    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{

    //说明
    //1.MyPanel 对象可以理解成一个画板
    //2.Graphics g 把g理解成一支画笔
    //3.Graphics 提供了很多绘图的方法
    @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 y2)
        //g.drawLine(10,10,100,10);

        //2. 画矩形边框 drawRect(int x, int y, int width, int height)
        //g.drawRect(10,10,100,100);

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

        //4. 填充矩形 fillRect(int x, int y, int width, int height)
        //设置画笔的颜色
        //g.setColor(Color.orange);
        //g.fillRect(10,10,100,100);

        //5. 填充椭圆 fillOval(int x, int y, int width, int height)
        //g.setColor(Color.blue);
        //g.fillOval(10,10,100,100);

        //6.    画图片 drawImage(Image img, int x, int y, ..)
        //6.1 获取图片资源, /HQY.jpg 表示在该项目的根目录去获取 HQY.jpg 图片资源
//        Image image = Toolkit.getDefaultToolkit().getImage(MyPanel.class.getResource("HQY.jgp"));
//        g.drawImage(image,10,10,500,500,this);

        //7. 画字符串 drawString(String str, int x, int y)//写字
        //给画笔设置颜色和字体
        g.setColor(Color.red);
        g.setFont(new Font("隶书", Font.BOLD, 50));
        //这里设置的 100, 100, 是 "北京你好"左下角
        g.drawString("北京你好", 100, 100);
        //8. 设置画笔的字体 setFont(Font font)
        
        //9. 设置画笔的颜色 setColor(Color c
    }

}


版权声明:本文为weixin_61843013原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。