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);
    }
相关推荐
2601_9659584622 分钟前
口腔黏膜脱皮超2周未愈建议及时就医
人工智能·python
AI_小站1 小时前
刚面完百度的 Agent 开发岗,我才发现:世界就是个巨大的草台班子
java·开发语言·人工智能·spring·百度·langchain
微小冷1 小时前
在不同空间中展示数据(欧式、球面、庞加莱圆盘)
python·双曲空间·微分几何·geomstats·庞加莱圆盘·球面
felixking2 小时前
C++20 协程
开发语言·c++·协程
weixin_431600442 小时前
Agent Workflow 学习向:Code 节点,比模板更强的变量加工
后端·python·学习·ai·
讲温控就好了2 小时前
从医疗影像到能源存储——芯片冷却温控技术的跨行业赋能
人工智能·python·能源
DeepVisionary2 小时前
从 Qwen3.8-27B 把原生多模态、原生 FP8、桌面级 Agent 三件事一次集齐,看开源大模型的“工业化拐点“
python·自动化
Zane1994123 小时前
CAS 与原子类:Java 如何实现无锁编程
java·开发语言
固定资产管理系统软件3 小时前
商务局RFID固定资产管理系统的应用价值与落地要点解析
大数据·python
码农颜4 小时前
6.3 主函数流程剖析
开发语言·php