一、Java绘图坐标体系
下图说明了Java坐标系,坐标原地位于左上角,以像素为单位。在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。
二、Java绘图原理
Java中,Component类提供了两个和绘图最相关的方法:
- paint()方法绘制组件的外观。
- repaint()方法刷新组件的外观。
当组件第一次在屏幕中展示时,程序会自动调用paint()方法来绘制组件。除此之外,在以下情况下paint()方法将会被调用:
- 窗口最小化,再最大化。
- 窗口的大小发生变化。
- 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类
- 画直线 drawLine(int x1,int y1,int x2, int y2)
- 画矩形边框 drawRect(int x, int y, int width, int height)
- 画椭圆边框 drawOval(int x, int y, int width, int height)
- 填充矩形 fillRect(int x, int y, int width, int height)
- 填充椭圆 fillOval(int x, int y, int width, int height)
- 画图片 drawImage(Image img, int x, in y,...)
- 画字符串 drawString(String str, int x, int y)
- 设置画笔的字体 setFont(Font font)
- 设置画笔的颜色 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);
}