第19章:Java绘图

19.1  绘图类
19.1.1  Graphics 类
        Grapics 类是所有图形上下文的抽象基类,它允许应用程序在组件以及闭屏图像上进行绘制。Graphics 类封装了Java 支持的基本绘图操作所需的状态信息,主要包括颜色、字体、画笔、文本、图像等。

       Graphics 类提供了绘图常用的方法,利用这些方法可以实现直线、钜形、多边形、椭面、圆弧等形状和文本、图片的绘制操作。另外,在执行这些操作之前,还可以使用相应的方法设置给图的颜色和字体等状态属性。


19.1.2  Graphics2D类
        使用Graphics 类可以完成简单的图形绘制任务,但是它所实现的功能非常有限,如无法改变线条的粗细、不能对图片使用旋转和模糊等过滤效果。

        Graphics2D 类继承Graphics 类,实现了功能更加强大的绘图操作的集合。由子Graphies2D类是Graphics 类的扩展,也是推荐使用的Java 绘图类。
        说明:Graphics2D 是推荐使用的绘图类,但是程序设计中提供的绘图对象大多是Gmphics 类的实例对象,这时应该使用强制类型转换将其转换为Giraphics2D 类型。

例如:

public void paint(Graphics g) {

Graphics2D g2=(Graphics2D) g;        //制类型转换为Graphics2D 类型

92......

}

19.2  绘制图形
        Java 可以分别使用Graphics 类和 Graphics2D 类绘制图形,Graphics类使用不同的方法实现不同图形的给制。例如,drawLine0方法可以绘制直线,drawRectO方法用于绘制矩形,drawOval0方法用于绘制椭圓形等。

例题19.1


import java.awt.Graphics;
 
import javax.swing.JFrame;
import javax.swing.JPanel;
 
public class DrawCircle extends JFrame{
	private final int OVAL_WIDTH=80;					//圆形的宽
	private final int OVAL_HEIGHT=80;					//圆形的高
	
	public DrawCircle() {
		initialize();									//调用初始化仿佛
	}
	private void initialize() {							//初始化方法
		setSize(300,200);								//设置窗体大小
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗体关闭模式
		setContentPane(new DrawPanel());				//设置窗体面板为绘图面板对象
		setTitle("绘图实例");								//设置窗体标题
	}
	class DrawPanel extends JPanel{					  	//创建绘图面板
		public void paint(Graphics g) {					//重写绘制方法
			g.drawOval(10, 10, OVAL_WIDTH, OVAL_HEIGHT);//绘制第一个圆形
			g.drawOval(80, 10, OVAL_WIDTH, OVAL_HEIGHT);//绘制第二个圆形
			g.drawOval(150, 10, OVAL_WIDTH, OVAL_HEIGHT);//绘制第三个圆形
			g.drawOval(50, 70, OVAL_WIDTH, OVAL_HEIGHT);//绘制第四个圆形
			g.drawOval(120, 70, OVAL_WIDTH, OVAL_HEIGHT);//绘制第五个圆形
		}
	}
	public static void main(String[] args) {
		new DrawCircle().setVisible(true);
	}
}

 结果为:

Graphics 类类常用的图形绘制方法图下:

Graphics2D类是在继承Graphics 类的基础上编写的,它包含了Graphics类的绘图方法并添加了更强的功能,在创建绘图类时推荐使用该类。Graphics2D类可以分别使用不同的类来表示不同的形状,Line2D类、Rectangle2D类等。

       要绘制指定形状的图形,需要先创建并初始化该图形类的对象,且这些图形类必须是Shape接口药实现类;然后使用Graphics2D类的draw0方法绘制该图形对象,或者使用610方法填充该图形对象。看法格式如下:

draw(Shape form)

fill(Shape form)

其中,form 是指实现Shape 接口的对象。

java.awt.geom 包中提供了如下常用的图形类,这些图形类都实现了Shape 接口:

  • Arc2D类
  • CubicCurve2D类
  • Ellipse2D类
  • Line2D类
  • Point2D类
  • QuadCurve2D类
  • Rectangle2D类
  • RoundRectangle2D类

例题19.2

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
 
import javax.swing.JFrame;
import javax.swing.JPanel;
 
public class DrawFrame extends JFrame{
	public DrawFrame() {
		setTitle("绘图实例2&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值