英文网站制作注意点,营口 微网站建设,广州网站建设功能,温州网站设计联系亿企邦一、介绍
下图说明了Java坐标系。坐标原点位于左上角#xff0c;以像素为单位。在Java坐标系中#xff0c;第一个是x坐标#xff0c;表示当前位置为水平方向#xff0c;距离坐标原点x个像素#xff1b;第二个是y坐标#xff0c;表示当前位置为垂直方向#xff0c;距离坐…一、介绍
下图说明了Java坐标系。坐标原点位于左上角以像素为单位。在Java坐标系中第一个是x坐标表示当前位置为水平方向距离坐标原点x个像素第二个是y坐标表示当前位置为垂直方向距离坐标原点y个像素。 二、像素
概念计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的。例如计算机显示器的分辨率是800×600,表示计算机屏幕上的每一行由800个点组成共有600行整个计算机屏幕共有480000个像素。需要注意的是像素是一个密度单位而厘米是长度单位两者无法比较
三、绘图原理
Component类提供了两个和绘图相关最重要的方法
1.paint(Graphics g)绘制组件的外观
2.repaint)刷新组件的外观。
当组件第一次在屏幕显示的时候程序会自动的调用paint()方法来绘制组件
在以下情况paint0将会被调用
1窗口最小化再最大化
2窗口的大小发生变化
3repaint方法被调用
四、入门案例
在面板上画一个圆圈
步骤如下
1.先定义一个MyPanel类, 继承JPanel类 画图形就在面板上画
2.在MyPanel中重写paint()方法在paint方法中调用Graphics类中的方法来画图
3.定义一个面板让主类继承JFrame
4.定义一个构造器在里面设置窗口的大小等
5.调用该构造器完成绘图
public class DrawCircle extends JFrame { //JFrame对应窗口,可以理解成是一个画框//定义一个面板private MyPanel mp null;public static void main(String[] args) {new DrawCircle();}public DrawCircle() {//构造器//初始化面板mp new MyPanel();//把面板放入到窗口(画框)this.add(mp);//设置窗口的大小this.setSize(400, 300);//当点击窗口的小×程序完全退出.this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);//可以显示}
}//1.先定义一个MyPanel, 继承JPanel类 画图形就在面板上画
class MyPanel extends JPanel {//说明://1. MyPanel 对象就是一个画板//2. Graphics g 把 g 理解成一支画笔//3. Graphics 提供了很多绘图的方法Overridepublic void paint(Graphics g) {//绘图方法super.paint(g);//调用父类的方法完成初始化.//画出一个圆形.g.drawOval(10, 10, 100, 100);}
}
五、Graphics类
Graphics常用方法(以下代码演示只需将上面入门案例中g.drawOval(10, 10, 100, 100)改成下述代码即可)
1画直线
drawLine(int x1,int y1,int x2,int y2)x1,y1表示直线起点的坐标x2,y2表示直线尾部的坐标
g.drawLine(10, 10, 100, 100);
效果 2画矩形边框
drawRect(int x, int y, int width, int height) x,y表示矩形边框左上角的坐标width,height分别表示矩形边框的宽高
g.drawRect(10, 10, 100, 100);
效果 3画椭圆边框
drawOval(int x, int y, int width, int height)x,y表示包围椭圆的边框左上角的坐标width,height分别表示边框的宽高
g.drawOval(10, 10, 100, 100);
效果 4填充矩形、设置画笔的颜色
fillOval(int x, int y, int width, int height)x,y表示矩形左上角的坐标width,height分别表示该矩形的宽高
g.setColor(Color.blue)Color.blue就是设置的画笔颜色默认黑色
g.setColor(Color.blue);//设置画笔颜色为蓝色
g.fillRect(10, 10, 100, 100);
效果
5填充椭圆
fillOval(int x, int y, int width, int height),x,y表示包围椭圆的边框左上角的坐标width,height分别表示边框的宽高
g.setColor(Color.red);//设置画笔颜色为红色
g.fillOval(10, 10, 100, 100);
效果
6放图片
drawImage(Image img, int x, int y, int width, int height, this)img为图片资源对象x,y表示图片左上角的坐标,width,height分别表示图片的宽高this表示在当前的画板
获取图像资源时maven的项目的根目录是resources我是在resources目录下新建了一个image的目录在把图片放到image目录下这里用的是绝对路径
//1. 获取图片资源, /image/a.png为图片地址
Image image Toolkit.getDefaultToolkit().getImage(Panel.class.getResource(/image/a.png));
g.drawImage(image, 10, 10, 175, 221, this);
效果
7写文字和设置字体
dramString(String str, int x, int y)str就是要写上去的字符串x,y是字符串的左下角坐标
setFont(new Font(隶书, Font.BOLD, 50))Font.BOLD表示设置为粗体50表示字体的大小
g.setColor(Color.red);
g.setFont(new Font(隶书, Font.BOLD, 50));
g.drawString(北京你好, 100, 100);
效果 六、综合案例
画一个小坦克
代码
MyPanel类
import javax.swing.*;
import java.awt.*;public class MyPanel extends JPanel {Overridepublic void paint(Graphics g) {super.paint(g);g.setColor(Color.cyan);g.fillRect(47, 50, 10,50);g.fillRect(77, 50, 10,50);g.fillRect(57, 60, 20,30);g.setColor(Color.blue);g.fillOval(57, 65, 20, 20);g.drawLine(67, 75, 67, 50);}
}
draw类
import javax.swing.*;public class draw extends JFrame {private MyPanel myPanel null;public draw() {myPanel new MyPanel();this.add(myPanel);this.setSize(500, 600);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}
}
主类Execute类
public class Execute {public static void main(String[] args) {new draw();}
}
运行效果