Java 2D 渲染

Java 2D API 在不同类型的设备之间提供了统一的呈现模型。在应用程序级别,无论目标渲染设备是屏幕还是打印机,渲染过程都是相同的。当需要显示组件时,将使用适当的Graphics上下文自动调用其paintupdate方法。

Java 2D API 包括java.awt.Graphics2D类,该类扩展了Graphics类以提供对 Java 2D API 的增强的图形和渲染功能的访问。这些功能包括:

  • 使用笔触和绘画属性(draw方法)渲染任何几何图元的轮廓。

  • 通过用绘制属性指定的颜色或图案填充其几何内部来渲染任何几何图元(fill方法)。

  • 呈现任何文本字符串(drawString方法)。字体属性用于将字符串 转换为字形,然后用 paint 属性指定的颜色或图案填充该字形。

  • 渲染指定的图像(drawImage方法)。

此外,Graphics2D类支持针对drawOvalfillRect等特定形状的Graphics渲染方法。上面表示的所有方法可以分为两组:

  • 绘制形状的方法

  • 影响渲染的方法

第二组方法将形成Graphics2D上下文的状态属性用于以下 Object:

  • 改变笔划宽度

  • 更改笔触连接在一起的方式

  • 设置剪切路径以限制渲染的区域

  • 在渲染对象时平移,旋转,缩放或剪切对象

  • 定义颜色和图案以填充形状

  • 指定如何组成多个图形对象

要在应用程序中使用 Java 2D API 功能,请将传递到组件的呈现方法中的Graphics对象转换为Graphics2D对象。例如:

public void paint (Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
    ...
}

如下图所示,Graphics2D类呈现上下文包含多个属性。

此图代表勾勒出形状的笔触* pen 属性*应用于形状的轮廓。此笔触属性使您可以绘制具有任何磅值和虚线图案的线,并应用端盖并将装饰连接到一条线上。
该图显示了如何用纯色填充形状填充属性应用于形状的内部。此绘画属性使您可以用纯色,渐变和图案填充形状。
该图显示了如何合成现有图像和图形图元当渲染的对象与现有对象重叠时,使用* compositing 属性*。
该图表示剪切变换* transform *属性在渲染期间应用,以将渲染的对象从用户空间转换为设备空间坐标。也可以通过此属性应用可选的平移,旋转,缩放或剪切变换。
该图表示如何使用 Shape 对象定义剪切路径* clip *类型将渲染限制为用于定义剪切路径的Shape对象轮廓内的区域。用于定义剪辑的任何Shape对象。
此图演示了字形的示例* font *属性用于将文本字符串 转换为字形。
这个数字代表抗锯齿渲染提示指定速度和质量之间的权衡取舍。例如,如果此功能可用,您可以指定是否应使用抗锯齿。另请参见控制渲染质量

要了解有关转换和合成的更多信息,请参见Java2D 中的高级主题类。

设置属性后,将传递适当的属性对象。如下例所示,要将 paint 属性更改为蓝绿色渐变填充,请构造一个GradientPaint对象,然后调用setPaint方法。

gp = new GradientPaint(0f,0f,blue,0f,30f,green);
g2.setPaint(gp);