1、Java绘图坐标体系
Java坐标系,坐标原点位于左上角,以像素为单位。
水平方向为x轴,向右为正方向
垂直方向为y轴,向下为正方向
2、像素
像素是密度单位,不等同于厘米,例如,计算机显示的分辨率是800X600
就表示的计算机屏幕一行有800个像素方块,共有600行,总共480000个像素方块构成,与厘米无法比较
3、说明
Component类提供了两个和绘图相关的重要方法
1)paint(Graphics g)绘制组件的外观
2)repaint()刷新组件的外观
注意:会自动的调用paint()方法的三种情况
1)当窗口最小化,然后最大化
2)窗口的大小发生变化
3)repaint()方法被调用
4、画一个圆
//1、画一个圆
package com.TEST;
import javax.swing.*;
import java.awt.*;
public class Test1 extends JFrame{//窗口
private MyPanle mp = null;
public static void main(String[] args){
new Test1();
System.out.println("program will be end");
}
public Test1(){//构造器
//初始化面板
mp=new MyPanle();
//将面板放到窗口
this.add(mp);
//设置窗口大小
this.setSize(300,200);
//设置显示
this.setVisible(true);
//设置退出
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MyPanle extends JPanel{
//MyPanle是画板
//Graphics画笔---并提供了很多方法
@Override
public void paint(Graphics g){
super.paint(g);//调用父类完成画笔初始化
g.drawOval(10,10,100,100);
}
}
5、其他常见图形
前言
绘图,只需要在Paint绘图方法中添加,修改,替换代码即可
直线
@Override
public void paint(Graphics g){ // 绘图方法
super.paint(g); // 调用父类的方法完成初始化
g.drawLine(20,20,100,100);
}
矩形边框
@Override
public void paint(Graphics g){ // 绘图方法
super.paint(g); // 调用父类的方法完成初始化
g.drawRect(20,20,100,100);
}
填充矩形
@Override
public void paint(Graphics g){ // 绘图方法
super.paint(g); // 调用父类的方法完成初始化
g.setColor(Color.blue); // 设置颜色
g.fillRect(20,20,100,100);
}
填充圆
@Override
public void paint(Graphics g){ // 绘图方法
super.paint(g); // 调用父类的方法完成初始化
g.setColor(Color.red);
g.fillOval(20,20,100,100);
}
填充椭圆
@Override
public void paint(Graphics g){ // 绘图方法
super.paint(g); // 调用父类的方法完成初始化
g.setColor(Color.green);
g.fillOval(20,20,50,100);
}
加载图片
@Override
public void paint(Graphics g){ // 绘图方法
super.paint(g); // 调用父类的方法完成初始化
// 获取图片资源
Image image =new ImageIcon("src/bg.jpg").getImage();
// 画图
g.drawImage(image, 10, 10, 450, 288, this);
//注意:图片文件在src文件路径下
}
加载字符串
@Override
public void paint(Graphics g){ // 绘图方法
super.paint(g); // 调用父类的方法完成初始化
g.setColor(Color.BLUE);
g.setFont(new Font("隶书", Font.BOLD, 50));
g.drawString("这是一个字符串abc",10,100);
}