Java绘图基础
一、Java 坐标体系
1. 像素的概念
计算机在屏幕上显示的内容 都是由屏幕上的每一个像素组成 的 像素是一个密度单位 ,而厘米是长度单位 ,两者无法比较
2. 坐标
横坐标:x
纵坐标:y
坐标原点 :位于左上角
距离:表示距离原点有多少个像素单位
二、绘图方法
1. 绘图原理
Component 类提供了两个和绘图相关最重要的方法
1. paint(Graphics g)绘制组件的外观
当组件第一次 在屏幕显示的时候,程序会自动的调用 paint()方法 来绘制组件。
在以下情况 paint()将会被调用
2. 绘制画板
类:JPanel
自定义类继承该类,重载 paint 构造器,调用父类的方法完成构造器的初始化(画一个圆为示例 )
class MyPanel extends JPanel { @Override public void paint ( Graphics g) { super . paint ( g) ; g. drawOval ( 150 , 50 , 100 , 100 ) ; }
}
代码解析
Graphics
是一个类,可以理解为画笔,通过调用该类中的方法来完成绘图 画圆的方法:首先根据坐标找到对应的位置,从该坐标点开始,按照给定的长度和宽度开始画圆(如果长宽不一致就是椭圆)
3. 绘制窗口,显示画板内容
类:JFrame
让主类继承该类,创建画板对象,在该类的构造器中完成窗口的初始化并添加画板
窗口的构建步骤、
创建一个画板对象(初始化画板) this.setSize
(长,宽):设置窗口的大小 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
:关闭窗口时退出程序,避免占用资源
运行查看效果:在主函数中创建一个窗口对象,第一次会自动调用 paint()方法完成绘图 (前面的绘图原理)
public class drawcircle extends JFrame { MyPanel panel = null ; public drawcircle ( ) { panel = new MyPanel ( ) ; this . add ( panel) ; this . setSize ( 400 , 300 ) ; this . setVisible ( true ) ; this . setDefaultCloseOperation ( JFrame . EXIT_ON_CLOSE ) ; } public static void main ( String [ ] args) { new drawcircle ( ) ; }
}
绘图效果
4. Graphics 类方法
方法 描述 setColor(Color c)
设置绘图颜色。使用 Color
类指定颜色 。 setFont(Font font)
设置字体。使用 Font
类指定字体样式 。 drawLine(int x1, int y1, int x2, int y2)
绘制一条线段,连接指定的两个坐标点 (x1, y1)
和 (x2, y2)
。 drawRect(int x, int y, int width, int height)
绘制矩形 ,指定矩形的左上角 (x, y)
和宽度、高度。 fillRect(int x, int y, int width, int height)
绘制并填充矩形 ,指定矩形的左上角 (x, y)
和宽度、高度。 drawOval(int x, int y, int width, int height)
绘制椭圆 ,指定椭圆的外接矩形的左上角 (x, y)
和宽度、高度。 fillOval(int x, int y, int width, int height)
绘制并填充椭圆 ,指定椭圆的外接矩形的左上角 (x, y)
和宽度、高度。 drawString(String str, int x, int y)
在指定位置 (x, y)
绘制文本 字符串。 drawImage(Image img, int x, int y, ImageObserver observer)
在指定位置 (x, y)
绘制图片 。
(1)绘制直线:传入起始坐标和终点坐标
(2)绘制矩形边框:传入起始坐标,传入矩形的长和宽
(3)填充矩形颜色:需要在绘制前设置矩形颜色(默认是黑色)
方法:setColor(Color.颜色名)
class MyPanel extends JPanel { @Override public void paint ( Graphics g) { super . paint ( g) ; System . out. println ( "paint方法被调用" ) ; g. setColor ( Color . lightGray) ; g. fillRect ( 50 , 50 , 100 , 100 ) ; }
}
(4)绘制椭圆边框,填充椭圆边框的方法大同小异,这里不做赘述
(5)绘制文本字符串
drwaString(“字符串”,起始横坐标,起始纵坐标),起始坐标对应字体的左下角 需要设置字体(字体的类型,字体的样式,字体的大小) g.setFont(new Font("楷体",Font.PLAIN,100))
字体样式
字段 描述 Font.PLAIN
普通字体,默认样式,没有加粗和斜体效果。 Font.BOLD
粗体样式,文本加粗,通常用于强调文本。 Font.ITALIC
斜体样式,文本倾斜,用于表示风格或突出显示部分文本。 Font.BOLD + Font.ITALIC
粗斜体样式,文本既加粗又倾斜,通常用于非常显眼的文本。
class MyPanel extends JPanel { @Override public void paint ( Graphics g) { super . paint ( g) ; System . out. println ( "paint方法被调用" ) ; g. setColor ( Color . lightGray) ; g. setFont ( new Font ( "楷体" , Font . PLAIN , 100 ) ) ; g. drawString ( "Java" , 70 , 150 ) ; }
}
(6)绘制图片
准备工作:把图片放在 out 文件夹下的项目的根目录 (易错:如果有多个包时,不是放在对应的包下,而是该项目名称的根目录下)
绘制步骤
获取图片资源: Image image = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/image.png"))
,此处为固定写法,把路径换成图片名称即可
class MyPanel extends JPanel { @Override public void paint ( Graphics g) { super . paint ( g) ; System . out. println ( "paint方法被调用" ) ; Image image = Toolkit . getDefaultToolkit ( ) . getImage ( Panel . class . getResource ( "/image.png" ) ) ; g. drawImage ( image, 0 , 0 , 100 , 140 , this ) ; }
}