GUI编程基础学习(四)——常见几何图形的绘制

绘制直线

在Java中可以使用以下方法绘画一条直线

drawLine(int x1,int y1,int x2,int y2);

其中参数(x1,y1)是直线的起点,(x2,y2)是直线的终点

绘制矩形

Java提供了绘画空心矩形(只绘制矩形的轮廓)和填充矩形的方法,分别针对普通直线矩形、圆角矩形和三维矩形有不同的绘制方法。

①直角矩形

绘制直角矩形的轮廓:

drawRect(int x,int y,int width,int height);

其中参数(x,y)是矩形左上角坐标,width是矩形宽度,height是矩形高度;

如果有填充颜色的直角矩形,可以使用下面方法:

fillRect(int x,int y,int width,int height);

②圆角矩形

绘制圆角矩形的轮廓:

drawRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight);

参数arcWidth和arcHeight分别表示圆角弧的水平直径和垂直直径;

③三维矩形

绘制三维矩形的轮廓:

draw3DRect(int x,int y,int width,int height,boolean raised);

如果需要绘制一个有填充颜色的三维矩形,可以使用下面方法:

fill3DRect(int x,int y,int width,int height,boolean raised);

这两个方法的参数意义是一致的,(x,y)表示三维矩形左上角的坐标,width为矩形宽,height为矩形高,raised为true时矩形从表面凸起,raised为false时矩形从表面凹进;

绘制椭圆

绘制空心椭圆:

drawOval(int x,int y,int width,int height);

绘制带有填充颜色的椭圆:

fillOval(int x,int y,int width,int height);

这两个方法的含义一致,(x,y)表示椭圆外接矩形左上角坐标,width表示椭圆水平直径,height表示椭圆垂直直径,当width和height值相等时,绘制圆。

清除绘制的图形

可以使用clearRect()方法清除绘制的图形:

clearRect(int x,int y,int width,int height);

作用是使用背景色填充指定矩形达到清除该矩形内容的效果。

案例:绘制一条直线,各种矩形各画一个,绘制一个实心椭圆和空心椭圆,画一个圆;

使用JPanel作为绘画面板 ,其中paint()方法是JPanel继承自父类的绘画方法,repaint()则是请求重画(自动调用paint())

MyPanel类代码:

import java.awt.*;

import javax.swing.*;

public class MyPanel extends JPanel{

	public MyPanel(){
		this.setPreferredSize(new Dimension(400,450));
		this.setVisible(true); 
		repaint();
	}
	
	//绘画方法
	public void paint(Graphics g){
		Color c = g.getColor();//保存初始颜色
		g.drawLine(10, 10, 100, 10);//画直线
		g.drawRect(10, 30, 90, 90);//画矩形	
		g.setColor(Color.BLUE);
		g.fillRect(10, 130, 90, 90);//画蓝色填充矩形
		g.setColor(c);
		g.drawRoundRect(10, 240, 90, 90, 20, 20);//画圆角矩形
		g.setColor(Color.YELLOW);
		g.fill3DRect(10, 340, 90, 90, true);//画凸出三维矩形
		g.fill3DRect(160, 10, 90, 90, false);//画凹进三维矩形
		g.setColor(c);
		g.drawOval(160, 110, 180, 90);//画空心椭圆
		g.setColor(Color.RED);
		g.fillOval(160, 210, 180, 90);//画实心椭圆
		g.setColor(c);
		g.drawOval(160, 310, 90, 90);//画圆
	}
	
}

Client类代码:

import java.awt.Container;

import javax.swing.JFrame;


public class Client extends JFrame{

	public Client(){
		MyPanel gamePanel = new MyPanel();//实例化面板对象
		Container container = this.getContentPane();//获取窗体内置容器
		container.add(gamePanel);//添加游戏主面板到内置容器
		pack();
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//当用户点击窗体右上角的x时,自动退出程序
		this.setTitle("绘画例子");//设置窗体标题
		this.setVisible(true);//展示窗体
	}
	
	public static void main(String[] args) {
		new Client();
	}

}

运行结果:

猜你喜欢

转载自blog.csdn.net/A1344714150/article/details/86092224