Java-Java绘图坐标体系

坐标体系介绍

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

像素介绍:像素是一个密度单位;计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的;计算机显示器的分辨率是1080*860,表示计算机屏幕上的每一行1080个点组成,共有860行,整个计算机屏幕共有928800个像素点。

绘图原理:

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

1)paint(Graphics g)方法,绘制组件的外观;

2)repaint()方法,刷新组件的外观;

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

★在以下情况下paint()方法会被调用:

1)窗口最小化,在最大化;

2)窗口的大小发生变化;

3)repaint()方法被调用;

案例演示代码:

package com.pero.draw;

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

/**
 * @author Pero
 * @version 1.0
 */
public class DrawCircle extends JFrame{  //JFrame对应窗口,相当于画框
    //定义一个面板
    private MyPanel mp = null;  //建立一个面板mp
    public static void main(String[] args) {
        new DrawCircle();
    }
    public DrawCircle(){    //窗口的构造器
        //初始化面板
        mp = new MyPanel();     //给面板mp赋值一个面板对象
        //把面板放入窗口
        this.add(mp);       //将面板添加到窗口中
        this.setSize(400,300);  //窗口的尺寸

        //当点击窗口的×图像时退出程序
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);  //是否显示窗口
    }
}
//先定义一个面板MyPanel相当于画板,继承JPanel类
//Graphics g,g为绘图工具,提供了很多绘图方法
class MyPanel extends JPanel{
    @Override
    public void paint(Graphics g) {  //绘图方法
        super.paint(g); //调用父类方法完成初始化

        System.out.println("paint()方法被调用");
        //设置圆形所占举行空间的左上角顶点位置为(10,10),
        // 圆形的宽为100像素点,高为100像素点
        g.drawOval(10,10,100,100);
    }

}

Graphics类

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,int y...):画图片;

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

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

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

package com.pero.draw;

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

/**
 * @author Pero
 * @version 1.0
 */
public class GraphicsMethod extends JFrame{
    MyGraphics myGraphics = null;

    public static void main(String[] args) {
        new GraphicsMethod();
    }

    public GraphicsMethod(){
        myGraphics = new MyGraphics();
        //在构造器调用父类方法
        this.add(myGraphics);
        this.setSize(484,394);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }
}

//设置画板
class MyGraphics extends JPanel{

    //设置画笔
    @Override
    public void paint(Graphics g) {
        super.paint(g);

        g.drawOval(10,10,50,50);
        g.drawRect(60,60,50,50);
        g.drawLine(110,110,160,160);
        g.setColor(Color.RED);
        g.fillOval(110,110,50,50);
        g.fillRect(160,160,50,50);
        //g.setFont();
        g.setColor(Color.BLACK);
        g.setFont(new Font("隶书",Font.BOLD,50));
        g.drawString("hello,world",160,160);

        Image image = Toolkit.getDefaultToolkit().getImage(
                Panel.class.getResource(
                        "/Adult-Model-ass-brunette-cleavage-hot-legs-1924081-wallhere.com.jpg"));
        g.drawImage(image,210,210,256,144,this);
    }
}

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值