JavaSE——绘图入门

一、Java绘图坐标体系

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

二、Java绘图原理

Java中,Component类提供了两个和绘图最相关的方法:

  1. paint()方法绘制组件的外观。
  2. repaint()方法刷新组件的外观。

当组件第一次在屏幕中展示时,程序会自动调用paint()方法来绘制组件。除此之外,在以下情况下paint()方法将会被调用:

  1. 窗口最小化,再最大化。
  2. 窗口的大小发生变化。
  3. repaint()方法被调用。

一个简单的例子:画一个圆

java 复制代码
public class DrawCircle extends 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(300,400);
        //当点击窗口的x,程序完全退出
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);//可以显示

    }
}
//1.先定义一个Mypane,继承Jpanel类,画图形
class Mypanel extends JPanel {

    //Mypanel 对象是一个画板
    //Graphics 对象是一支画笔
    //Graphics 提供了绘图的方法

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

三、Graphics类

  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, in y,...)
  7. 画字符串 drawString(String str, int x, int y)
  8. 设置画笔的字体 setFont(Font font)
  9. 设置画笔的颜色 setColor(Color c)
java 复制代码
public void paint(Graphics g){
        super.paint(g);//调用父类的方法完成初始化
        //画出一个圆形
        g.drawOval(10,10,100,100);

        //画一条直线
        g.drawLine(10,10,100,100);

        //画矩形边框
        g.drawRect(10,10,100,100);

        //画椭圆边框
        g.drawOval(10,10,100,200);

        //设置画笔颜色
        g.setColor(Color.blue);

        //填充矩形
        g.fillRect(100,100,200,200);

        //填充椭圆
        g.fillOval(10,10,100,200);

        //画图片
        //先获取图片资源,/bg.png表示在该项目的根目录去获取bg.png图片资源
        Image image = Toolkit.getDefaultToolkit().getImage(Mypanel.class.getResource("bg.png"));            
        g.drawImage(image, 10, 10, 175,221,this);

        //画字符串
        //给画笔设置颜色和字体
        g.setColor(Color.red);
        //三个参数分别为字体,是否是粗体,大小
        g.setFont(new Font("隶书",Font.BOLD,50));
        g.drawString("北京你好",100,100);
    }
相关推荐
一起养小猫几秒前
LeetCode100天Day9-无重复字符的最长子串与赎金信
java·开发语言·数据结构·leetcode
古城小栈1 分钟前
PyO3 库全介绍
python·rust
wjs20246 分钟前
Go 语言类型转换
开发语言
菩提祖师_7 分钟前
基于Java的物联网智能交通灯控制系统
java·开发语言·物联网
技术工小李10 分钟前
2026马年年会“接福袋”游戏
python
公众号:ITIL之家12 分钟前
服务价值体系重构:在变化中寻找不变的运维本质
java·运维·开发语言·数据库·重构
zhaokuner18 分钟前
01-领域与问题空间-DDD领域驱动设计
java·开发语言·设计模式·架构
0思必得020 分钟前
[Web自动化] Requests模块请求参数
运维·前端·python·自动化·html
青岛少儿编程-王老师26 分钟前
CCF编程能力等级认证GESP—C++8级—20251227
java·开发语言·c++
charlie11451419130 分钟前
FreeRTOS:中断(ISR)与 RTOS 安全 API
开发语言·c·freertos·实时操作系统