坐标体系介绍
坐标原点位于左上角,以像素为单位。在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);
}
}