这些 Java 教程是针对 JDK 8 编写的。本页中描述的示例和实践不利用后续版本中引入的改进,并且可能使用不再可用的技术。
有关 Java SE 9 及后续版本中更新的语言特性的摘要,请参阅Java 语言更改。
有关所有 JDK 发布的新功能、增强功能以及已删除或已弃用选项的信息,请参阅JDK 发布说明。
Java 2D API提供了一个统一的渲染模型,适用于不同类型的设备。在应用程序层面,无论目标渲染设备是屏幕还是打印机,渲染过程都是相同的。当组件需要显示时,会自动调用其paint
或update
方法,并提供适当的Graphics
上下文。
Java 2D API包括java.awt.Graphics2D
类,该类扩展了Graphics
类,提供了对Java 2D API增强图形和渲染功能的访问。这些功能包括:
draw
方法)渲染任何几何图元的轮廓。fill
方法)填充任何几何图元的内部。drawString
方法)。字体属性用于将字符串转换为字形,然后使用颜色或图案填充。drawImage
方法)。此外,Graphics2D
类还支持用于特定形状的Graphics
渲染方法,如drawOval
和fillRect
。上述所有方法可以分为两组:
第二组方法使用状态属性来形成Graphics2D
上下文,用于以下目的:
要在应用程序中使用Java 2D API功能,将传递到组件渲染方法中的Graphics
对象转换为Graphics2D
对象。例如:
public void paint (Graphics g) { Graphics2D g2 = (Graphics2D) g; ... }
如下图所示,Graphics2D
类的渲染上下文包含多个属性。
pen属性应用于形状的轮廓。这个笔触属性允许你用任何点大小和虚线模式绘制线条,并对线条应用末端装饰和连接装饰。 | |
fill属性应用于形状的内部。这个绘画属性允许你用纯色、渐变和图案填充形状。 | |
compositing属性在渲染的对象重叠现有对象时使用。 | |
transform属性在渲染过程中应用,将渲染对象从用户空间转换为设备空间坐标。通过这个属性还可以应用可选的平移、旋转、缩放或剪切变换。 | |
clip类型将渲染限制在用于定义剪切路径的Shape 对象的轮廓内。任何用于定义剪切的Shape 对象都可以使用这个剪切属性。 |
|
font属性用于将文本字符串转换为字形。 |
|
渲染提示指定在速度和质量之间的权衡偏好。例如,你可以指定是否应使用抗锯齿,如果此功能可用的话。另请参见控制渲染质量。 |
要了解更多关于转换和组合的内容,请参阅Java2D高级主题。
当设置了属性后,将传递适当的属性对象。如下面的示例所示,要将绘画属性更改为蓝绿色渐变填充,你需要构造一个GradientPaint
对象,然后调用setPaint
方法。
gp = new GradientPaint(0f,0f,蓝色,0f,30f,绿色); g2.setPaint(gp);