Java 2D 渲染
Java 2D API 在不同类型的设备之间提供了统一的呈现模型。在应用程序级别,无论目标渲染设备是屏幕还是打印机,渲染过程都是相同的。当需要显示组件时,将使用适当的Graphics
上下文自动调用其paint
或update
方法。
Java 2D API 包括java.awt.Graphics2D类,该类扩展了Graphics类以提供对 Java 2D API 的增强的图形和渲染功能的访问。这些功能包括:
-
使用笔触和绘画属性(
draw
方法)渲染任何几何图元的轮廓。 -
通过用绘制属性指定的颜色或图案填充其几何内部来渲染任何几何图元(
fill
方法)。 -
呈现任何文本字符串(
drawString
方法)。字体属性用于将字符串 转换为字形,然后用 paint 属性指定的颜色或图案填充该字形。 -
渲染指定的图像(
drawImage
方法)。
此外,Graphics2D
类支持针对drawOval
和fillRect
等特定形状的Graphics
渲染方法。上面表示的所有方法可以分为两组:
-
绘制形状的方法
-
影响渲染的方法
第二组方法将形成Graphics2D
上下文的状态属性用于以下 Object:
-
改变笔划宽度
-
更改笔触连接在一起的方式
-
设置剪切路径以限制渲染的区域
-
在渲染对象时平移,旋转,缩放或剪切对象
-
定义颜色和图案以填充形状
-
指定如何组成多个图形对象
要在应用程序中使用 Java 2D API 功能,请将传递到组件的呈现方法中的Graphics
对象转换为Graphics2D
对象。例如:
public void paint (Graphics g) {
Graphics2D g2 = (Graphics2D) g;
...
}
如下图所示,Graphics2D
类呈现上下文包含多个属性。
* pen 属性*应用于形状的轮廓。此笔触属性使您可以绘制具有任何磅值和虚线图案的线,并应用端盖并将装饰连接到一条线上。 | |
填充属性应用于形状的内部。此绘画属性使您可以用纯色,渐变和图案填充形状。 | |
当渲染的对象与现有对象重叠时,使用* compositing 属性*。 | |
* transform *属性在渲染期间应用,以将渲染的对象从用户空间转换为设备空间坐标。也可以通过此属性应用可选的平移,旋转,缩放或剪切变换。 | |
* clip *类型将渲染限制为用于定义剪切路径的Shape 对象轮廓内的区域。用于定义剪辑的任何Shape 对象。 | |
* font *属性用于将文本字符串 转换为字形。 | |
渲染提示指定速度和质量之间的权衡取舍。例如,如果此功能可用,您可以指定是否应使用抗锯齿。另请参见控制渲染质量。 |
要了解有关转换和合成的更多信息,请参见Java2D 中的高级主题类。
设置属性后,将传递适当的属性对象。如下例所示,要将 paint 属性更改为蓝绿色渐变填充,请构造一个GradientPaint
对象,然后调用setPaint
方法。
gp = new GradientPaint(0f,0f,blue,0f,30f,green);
g2.setPaint(gp);