java绘图坐标体系
像素
Java绘图技术
一般 x和y 指的是左上角的坐标,并不是圆点。
public class DrawCircle extends JFrame { //JFrame对应窗口,可以理解为一个画框
private MyPanel mp = null;
public DrawCircle(){ //构造器
mp = new MyPanel();//生成新画板
this.add(mp);//把画板放入画框内
this.setSize(400,300); //设置窗口大小
this.setVisible(true); //设置为可以显示
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //这样点击×就退出了程序
}
public static void main(String[] args) {
DrawCircle drawCircle = new DrawCircle();
}
}
//定义一个MyPanel,继承JPanel类,
class MyPanel extends JPanel{
//可以把MyPanel对象理解成一个画板
public void paint(Graphics g){
//可以把g理解成一支画笔,提供多种绘图方法
super.paint(g); //调用父类的构造方法完成初始化
g.drawOval(10,10,100,100);//画出一个圆形
}
}
值得探讨的一个问题:其实整个代码根本没有调用MyPanel的paint方法,那么它是怎么被调用多个呢: 1. 当组件第一次在屏幕显示时,程序会自动的调用paint()方法来绘制组件。2. 窗口最小化,再最大化。 3. 窗口的大小发生变化 4. repaint函数被调用。
绘图方法
全部都是 Graphics g 的方法
重点:如何提取图片—— 图片要放在src文件夹中(根目录)。
Image image = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/1.2.3a.jpg"));
//只有路径不一样,前面都是写死的,用"/文件名"的格式题取
g.drawImage(image,10,10,175,221,this); //设置图片大小
fill3DRect(int x,int y,int width,int height,boolean raised):用预定的颜色填充一个突出显示的矩形。