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);
    }
相关推荐
会飞的大鱼人25 分钟前
一文搞懂 Java HashSet:把它想成游乐园里只允许一次入场的盖章名单
java·开发语言·windows
巨量HTTP1 小时前
Python爬虫动态换IP实战,彻底解决IP403封禁、限流问题(附完整代码)
爬虫·python·tcp/ip·http
jiay21 小时前
【.net10】顶级程序语句
java·开发语言
晓子文集1 小时前
Tushare接口文档:指数成分和权重(index_weight)
大数据·数据库·python·金融·量化投资
小大宇1 小时前
python pandas dataFrame sqlAlchemy案例
python·pandas
淼澄研学1 小时前
Python进阶实战:深入解析推导式与生成器等5大核心特性
开发语言·python
xlrqx2 小时前
商丘家电清洗培训零基础学习需掌握哪些要点零基础到底能不能学
python·学习
卷无止境2 小时前
Python虚拟环境江湖:从venv到uv,如何避开依赖冲突的坑
后端·python
玉鸯2 小时前
Agent Harness 工程核心架构拆解与 300 行代码实现
python·agent
米码收割机2 小时前
【Python】Django 电子设备商城系统(源码+说明文档)[独一无二]
开发语言·python·django