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);
    }
相关推荐
tao3556672 分钟前
【Python刷力扣hot100】283. Move Zeroes
开发语言·python·leetcode
progalchemist19 分钟前
Quick SwiftObjective-C测试框架入门教程
开发语言·其他·objective-c·swift
z日火29 分钟前
Java 泛型
java·开发语言
广药门徒31 分钟前
Linux(含嵌入式设备如泰山派)VNC 完整配置指南:含开机自启动(适配 Ubuntu/Debian 系)
开发语言·php
小宁爱Python44 分钟前
从零搭建 RAG 智能问答系统1:基于 LlamaIndex 与 Chainlit实现最简单的聊天助手
人工智能·后端·python
不做无法实现的梦~1 小时前
jetson刷系统之后没有浏览器--解决办法
开发语言·javascript·ecmascript
湖南人爱科技有限公司1 小时前
RaPhp和Python某音最新bd-ticket-guard-client-data加密算法解析(视频评论)
android·python·php·音视频·爬山算法·raphp
一只小松许️1 小时前
深入理解:Rust 的内存模型
java·开发语言·rust
eqwaak02 小时前
数据预处理与可视化流水线:Pandas Profiling + Altair 实战指南
开发语言·python·信息可视化·数据挖掘·数据分析·pandas