Graphics2D 类扩展了 Graphics 类以提供对几何、坐标转换、颜色管理和文本布局的更复杂控制。这是在 Java(tm) 平台上渲染二维形状、文本和图像的基础类。
坐标空间
传递给Graphics2D 对象的所有坐标都在称为用户空间的设备独立坐标系中指定,该坐标系供应用程序使用。 Graphics2D 对象包含一个 AffineTransform 对象作为其呈现状态的一部分,该对象定义了如何将坐标从用户空间转换为设备空间中的设备相关坐标。
设备空间中的坐标通常指的是单个设备像素,并在这些像素之间的无限细间隙上对齐。一些 Graphics2D 对象可用于捕获渲染操作以存储到图形元文件中,以便稍后在未知物理分辨率的具体设备上播放。由于在捕获渲染操作时可能不知道分辨率,Graphics2D Transform 被设置为将用户坐标转换为接近目标设备预期分辨率的虚拟设备空间。如果估计不正确,可能需要在回放时应用进一步的转换。
渲染属性对象执行的一些操作发生在设备空间中,但所有Graphics2D方法都采用用户空间坐标。
每个 Graphics2D 对象都与一个定义渲染发生位置的目标相关联。 GraphicsConfiguration 对象定义渲染目标的特性,例如像素格式和分辨率。 Graphics2D 对象的整个生命周期都使用相同的渲染目标。
创建 Graphics2D 对象时,GraphicsConfiguration 指定 默认转换 作为 Graphics2D 的目标(Component 或 Image )。此默认变换将用户空间坐标系映射到屏幕和打印机设备坐标,使得原点映射到设备目标区域的左上角,X 坐标向右延伸,Y 坐标向下延伸。对于那些接近 72 dpi 的设备,例如屏幕设备,默认变换的缩放设置为标识。对于高分辨率设备(例如打印机),默认变换的缩放比例设置为每平方英寸大约 72 个用户空间坐标。对于图像缓冲区,默认变换是 Identity 变换。
渲染过程
渲染过程可以分为四个阶段,由Graphics2D 渲染属性控制。渲染器可以优化这些步骤中的许多步骤,方法是缓存结果以供将来调用,将多个虚拟步骤折叠成一个操作,或者将各种属性识别为可以通过修改操作的其他部分来消除的常见简单情况。
渲染过程中的步骤是:
- 确定要渲染的内容。
- 将渲染操作限制在当前
Clip。Clip由用户空间中的Shape指定,并由程序使用Graphics和Graphics2D的各种剪辑操作方法控制。这用户剪辑由当前的Transform转化为设备空间并与设备剪辑,它由窗口和设备范围的可见性定义。用户剪辑和设备剪辑的组合定义了合成剪辑,它决定了最终的裁剪区域。渲染系统不修改用户剪辑以反映生成的合成剪辑。 - 确定要渲染的颜色。
- 使用
Graphics2D上下文中的当前Composite属性将颜色应用于目标绘图表面。
三种类型的渲染操作,以及它们各自特定渲染过程的详细信息是:
Shape操作- 如果操作是
draw(Shape)操作,则使用Graphics2D上下文中当前Stroke属性的createStrokedShape方法构造一个新的Shape对象,该对象包含指定Shape的轮廓。 Shape使用Graphics2D上下文中的当前Transform从用户空间转换为设备空间。Shape的轮廓是使用Shape的getPathIterator方法提取的,该方法返回一个沿Shape边界迭代的PathIterator对象。- 如果
Graphics2D对象无法处理PathIterator对象返回的曲线段,那么它可以调用Shape的备用getPathIterator方法,这会压平Shape。 - 查询
Graphics2D上下文中的当前Paint以查找PaintContext,它指定要在设备空间中呈现的颜色。
- 如果操作是
- 文本操作
- 以下步骤用于确定呈现指示的
String所需的字形集:- 如果参数是
String,则要求Graphics2D上下文中的当前Font将String中的 Unicode 字符转换为一组字形,以便使用字体实现的任何基本布局和整形算法进行呈现。 - 如果参数是
AttributedCharacterIterator,则要求迭代器使用其嵌入的字体属性将自身转换为TextLayout。TextLayout实现了更复杂的字形布局算法,可以针对不同书写方向的多种字体自动执行 Unicode 双向布局调整。 - 如果参数是
GlyphVector,那么GlyphVector对象已经包含适当的特定于字体的字形代码,每个字形的位置都有明确的坐标。
- 如果参数是
- 查询当前
Font以获得指定字形的轮廓。这些轮廓被视为用户空间中相对于步骤 1 中确定的每个字形位置的形状。 - 字符轮廓如上所示在
Shape操作 下填充。 - 查询当前
Paint以获取PaintContext,它指定要在设备空间中呈现的颜色。
- 以下步骤用于确定呈现指示的
Image运营- 感兴趣区域由源
Image的边界框定义。此边界框在图像空间中指定,图像空间是Image对象的局部坐标系。 - 如果
AffineTransform传递给drawImage(Image, AffineTransform, ImageObserver),则AffineTransform用于将边界框从图像空间转换为用户空间。如果未提供AffineTransform,则边界框被视为已经在用户空间中。 - 使用当前的
Transform将源Image的边界框从用户空间转换为设备空间。请注意,转换边界框的结果不一定会在设备空间中产生矩形区域。 Image对象确定要渲染的颜色,根据当前Transform和可选图像变换指定的源到目标坐标映射进行采样。
- 感兴趣区域由源
默认渲染属性
Graphics2D 渲染属性的默认值是:
PaintComponent的颜色。FontComponent的Font。Stroke- 线宽为 1、无虚线、斜接段连接和方形端盖的方形笔。
TransformComponent的GraphicsConfiguration的getDefaultTransform。CompositeAlphaComposite.SRC_OVER规则。Clip-
没有渲染
Clip,输出被裁剪到Component。
渲染兼容性问题
JDK(tm) 1.1 渲染模型基于像素化模型,该模型指定坐标无限细,位于像素之间。绘图操作是使用一个像素宽的笔执行的,该笔填充路径上锚点下方和右侧的像素。 JDK 1.1 渲染模型与大多数现有平台渲染器类的功能一致,这些平台渲染器需要将整数坐标解析为必须完全落在指定数量像素上的离散笔。Java 2D(tm)(Java(tm) 2 平台)API 支持抗锯齿渲染器。与像素 N+1 相比,宽度为一个像素的笔不需要完全落在像素 N 上。笔可以部分落在两个像素上。没有必要为宽笔选择偏置方向,因为沿着笔遍历边缘发生的混合使笔的子像素位置对用户可见。另一方面,当通过将 KEY_ANTIALIASING 提示键设置为 VALUE_ANTIALIAS_OFF 提示值来关闭抗锯齿时,渲染器可能需要应用偏差来确定当笔跨越像素边界时要修改的像素,例如当它是沿设备空间中的整数坐标绘制。虽然抗锯齿渲染器的功能使得渲染模型不再需要为笔指定偏差,但抗锯齿和非抗锯齿渲染器对于绘制一个像素宽的水平和屏幕上的垂直线。为了确保通过将 KEY_ANTIALIASING 提示键设置为 VALUE_ANTIALIAS_ON 来打开抗锯齿功能不会导致这些线条突然变得两倍宽和一半不透明,最好让模型为这些线条指定一条路径,以便它们完全覆盖特定的区域一组像素以帮助增加它们的清晰度。
Java 2D API 保持与 JDK 1.1 呈现行为的兼容性,这样遗留操作和现有呈现器行为在 Java 2D API 下保持不变。定义了映射到一般draw和fill方法的遗留方法,这清楚地表明Graphics2D如何根据Stroke和Transform属性的设置和渲染提示扩展Graphics。该定义在默认属性设置下执行相同。例如,默认的 Stroke 是宽度为 1 且没有虚线的 BasicStroke,屏幕绘图的默认转换是恒等转换。
无论使用锯齿还是抗锯齿,以下两条规则都提供了可预测的渲染行为。
- 设备坐标被定义为在设备像素之间,这避免了锯齿渲染和抗锯齿渲染之间的任何不一致结果。如果坐标被定义为位于像素的中心,则被形状(例如矩形)重写的一些像素将仅被重写一半。使用锯齿渲染,半重写像素将渲染在形状内部或形状外部。使用抗锯齿渲染,形状整个边缘上的像素将被一半重写。另一方面,由于坐标被定义为在像素之间,所以像矩形这样的形状将没有半重写像素,无论它是否使用抗锯齿进行渲染。
- 使用
BasicStroke对象描边的线条和路径可能会被“规范化”,以在位于可绘制对象上的不同点时以及是否使用锯齿或抗锯齿渲染绘制时提供一致的轮廓渲染。此规范化过程由KEY_STROKE_CONTROL提示控制。未指定确切的归一化算法,但此归一化的目标是确保线条以一致的视觉外观呈现,无论它们如何落在像素网格上,并在抗锯齿模式下促进更实心的水平和垂直线,使它们类似于他们的非抗锯齿对应物更紧密。典型的归一化步骤可能会将抗锯齿线端点提升到像素中心以减少混合量或调整非抗锯齿线的子像素定位,以便浮点线宽以相等的可能性舍入到偶数或奇数像素数。此过程最多可以将端点移动半个像素(通常沿两个轴朝向正无穷大)以促进这些一致的结果。
以下一般遗留方法的定义与先前在默认属性设置下指定的行为相同:
- 对于
fill操作,包括fillRect、fillRoundRect、fillOval、fillArc、fillPolygon和clearRect,现在可以使用所需的Shape调用fill。例如,填充矩形时:fill(new Rectangle(x, y, w, h));
被调用。 - 同样,对于绘制操作,包括
drawLine、drawRect、drawRoundRect、drawOval、drawArc、drawPolyline和drawPolygon,现在可以使用所需的Shape调用draw。例如,绘制矩形时:draw(new Rectangle(x, y, w, h));
被调用。 draw3DRect和fill3DRect方法是根据Graphics类中的drawLine和fillRect方法实现的,它们的行为基于Graphics2D上下文中的当前Stroke和Paint对象。此类使用专门使用当前Color的版本覆盖那些实现,覆盖当前Paint并使用fillRect来描述与先前存在的方法完全相同的行为,而不管当前Stroke的设置如何。
Graphics类只定义了setColor方法来控制要绘制的颜色。由于 Java 2D API 扩展了 Color 对象以实现新的 Paint 接口,现有的 setColor 方法现在是将当前 Paint 属性设置为 Color 对象的便捷方法。 setColor(c) 相当于 setPaint(c) 。
Graphics 类定义了两种方法来控制如何将颜色应用于目标。
setPaintMode方法被实现为设置默认值Composite的便捷方法,相当于setComposite(new AlphaComposite.SrcOver)。setXORMode(Color xorcolor)方法作为一种方便的方法来设置特殊的Composite对象,该对象忽略源颜色的Alpha组件并将目标颜色设置为值:dstpixel = (PixelOf(srccolor) ^ PixelOf(xorcolor) ^ dstpixel);
- 参见:
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述abstract voidaddRenderingHints(Map<?, ?> hints) 为渲染算法设置任意数量的首选项值。abstract void将当前Clip与指定Shape的内部相交,并将Clip设置为生成的交集。abstract void使用当前Graphics2D上下文的设置描边Shape的轮廓。voiddraw3DRect(int x, int y, int width, int height, boolean raised) 绘制指定矩形的 3-D 高亮轮廓。abstract voiddrawGlyphVector(GlyphVector g, float x, float y) 使用Graphics2D上下文的呈现属性呈现指定GlyphVector的文本。abstract voiddrawImage(BufferedImage img, BufferedImageOp op, int x, int y) 呈现使用BufferedImageOp过滤的BufferedImage。abstract booleandrawImage(Image img, AffineTransform xform, ImageObserver obs) 渲染图像,在绘制之前应用从图像空间到用户空间的变换。abstract voiddrawRenderableImage(RenderableImage img, AffineTransform xform) 呈现RenderableImage,在绘制之前应用从图像空间到用户空间的变换。abstract voiddrawRenderedImage(RenderedImage img, AffineTransform xform) 呈现RenderedImage,在绘制之前应用从图像空间到用户空间的变换。abstract voiddrawString(String str, float x, float y) 使用Graphics2D上下文中的当前文本属性状态呈现由指定的String指定的文本。abstract voiddrawString(String str, int x, int y) 使用Graphics2D上下文中的当前文本属性状态呈现指定String的文本。abstract voiddrawString(AttributedCharacterIterator iterator, float x, float y) 根据TextAttribute类的规范应用其属性呈现指定迭代器的文本。abstract voiddrawString(AttributedCharacterIterator iterator, int x, int y) 根据TextAttribute类的规范应用其属性呈现指定迭代器的文本。abstract void使用Graphics2D上下文的设置填充Shape的内部。voidfill3DRect(int x, int y, int width, int height, boolean raised) 绘制一个用当前颜色填充的 3-D 高亮矩形。abstract Color返回用于清除区域的背景颜色。abstract Composite返回Graphics2D上下文中的当前Composite。abstract GraphicsConfiguration返回与此Graphics2D关联的设备配置。abstract FontRenderContext在此Graphics2D上下文中获取Font的渲染上下文。abstract PaintgetPaint()返回Graphics2D上下文的当前Paint。abstract ObjectgetRenderingHint(RenderingHints.Key hintKey) 返回渲染算法的单个首选项的值。abstract RenderingHints获取渲染算法的首选项。abstract Stroke返回Graphics2D上下文中的当前Stroke。abstract AffineTransform在Graphics2D上下文中返回当前Transform的副本。abstract boolean检查指定的Shape是否与设备空间中指定的Rectangle相交。abstract voidrotate(double theta) 将当前的Graphics2DTransform与旋转变换连接起来。abstract voidrotate(double theta, double x, double y) 将当前的Graphics2DTransform与平移的旋转变换连接起来。abstract voidscale(double sx, double sy) 将当前Graphics2DTransform与缩放变换连接起来。根据相对于先前缩放的指定缩放因子调整后续渲染的大小。abstract voidsetBackground(Color color) 设置Graphics2D上下文的背景颜色。abstract voidsetComposite(Composite comp) 为Graphics2D上下文设置Composite。abstract void为Graphics2D上下文设置Paint属性。abstract voidsetRenderingHint(RenderingHints.Key hintKey, Object hintValue) 为渲染算法设置单个首选项的值。abstract voidsetRenderingHints(Map<?, ?> hints) 用指定的hints替换渲染算法的所有首选项的值。abstract void为Graphics2D上下文设置Stroke。abstract void覆盖Graphics2D上下文中的转换。abstract voidshear(double shx, double shy) 将当前的Graphics2DTransform与剪切变换连接起来。abstract void根据规则 last-specified-first-applied 将AffineTransform对象与Graphics2D中的Transform组合起来。abstract voidtranslate(double tx, double ty) 将当前的Graphics2D Transform与翻译转换连接起来。abstract voidtranslate(int x, int y) 将Graphics2D上下文的原点转换为点 (x, y) 在当前坐标系中。在类 java.awt.Graphics 中声明的方法
clearRect, clipRect, copyArea, create, create, dispose, drawArc, drawBytes, drawChars, drawImage, drawImage, drawImage, drawImage, drawImage, drawImage, drawLine, drawOval, drawPolygon, drawPolygon, drawPolyline, drawRect, drawRoundRect, fillArc, fillOval, fillPolygon, fillPolygon, fillRect, fillRoundRect, finalize, getClip, getClipBounds, getClipBounds, getClipRect, getColor, getFont, getFontMetrics, getFontMetrics, hitClip, setClip, setClip, setColor, setFont, setPaintMode, setXORMode, toString
-
构造方法详细信息
-
Graphics2D
protected Graphics2D()构造一个新的Graphics2D对象。由于Graphics2D是一个抽象类,而且由于它必须由子类针对不同的输出设备进行定制,所以无法直接创建Graphics2D对象。相反,Graphics2D对象必须从另一个Graphics2D对象获取,由Component创建,或者从BufferedImage对象等图像获取。- 参见:
-
-
方法详情
-
draw3DRect
public void draw3DRect(int x, int y, int width, int height, boolean raised) 绘制指定矩形的 3-D 高亮轮廓。矩形的边缘被突出显示,因此它们看起来是倾斜的,并且从左上角被照亮。用于高亮效果的颜色是根据当前颜色确定的。生成的矩形覆盖了
width + 1像素宽 xheight + 1像素高的区域。此方法仅使用当前的Color并忽略当前的Paint。- 重写:
draw3DRect在类Graphics中- 参数:
x- 要绘制的矩形的 x 坐标。y- 要绘制的矩形的 y 坐标。width- 要绘制的矩形的宽度。height- 要绘制的矩形的高度。raised- 一个boolean,用于确定矩形是凸出表面还是凹入表面。- 参见:
-
fill3DRect
public void fill3DRect(int x, int y, int width, int height, boolean raised) 绘制一个用当前颜色填充的 3-D 高亮矩形。矩形的边缘被突出显示,因此看起来好像边缘被斜切并从左上角被照亮。用于突出显示效果和填充的颜色由当前的Color确定。此方法仅使用当前的Color并忽略当前的Paint。- 重写:
fill3DRect在类Graphics中- 参数:
x- 要填充的矩形的 x 坐标。y- 要填充的矩形的 y 坐标。width- 要填充的矩形的宽度。height- 要填充的矩形的高度。raised- 一个boolean,用于确定矩形是凸出表面还是蚀刻到表面中。- 参见:
-
draw
使用当前Graphics2D上下文的设置描边Shape的轮廓。应用的渲染属性包括Clip、Transform、Paint、Composite和Stroke属性。- 参数:
s- 要渲染的Shape- 参见:
-
drawImage
渲染图像,在绘制之前应用从图像空间到用户空间的变换。从用户空间到设备空间的转换是通过Graphics2D中的当前Transform完成的。在应用Graphics2D上下文中的变换属性之前,将指定的变换应用于图像。应用的渲染属性包括Clip、Transform和Composite属性。请注意,如果指定的变换是不可逆的,则不会进行渲染。- 参数:
img- 要渲染的指定图像。如果img为空,则此方法不执行任何操作。xform- 从图像空间到用户空间的转换obs- 随着更多Image被转换,将通知ImageObserver- 返回:
true如果Image已完全加载并完全呈现,或者它是否为空;false如果Image仍在加载。- 参见:
-
drawImage
呈现使用BufferedImageOp过滤的BufferedImage。应用的渲染属性包括Clip、Transform和Composite属性。这相当于:img1 = op.filter(img, null); drawImage(img1, new AffineTransform(1f,0f,0f,1f,x,y), null);
- 参数:
img- 要渲染的指定BufferedImage。如果img为空,则此方法不执行任何操作。op- 渲染前应用于图像的滤镜x- 用户空间中图像左上角渲染位置的 x 坐标y- 用户空间中图像左上角渲染位置的 y 坐标- 参见:
-
drawRenderedImage
呈现RenderedImage,在绘制之前应用从图像空间到用户空间的变换。从用户空间到设备空间的转换是通过Graphics2D中的当前Transform完成的。在应用Graphics2D上下文中的变换属性之前,将指定的变换应用于图像。应用的渲染属性包括Clip、Transform和Composite属性。请注意,如果指定的变换是不可逆的,则不会进行渲染。- 参数:
img- 要渲染的图像。如果img为空,则此方法不执行任何操作。xform- 从图像空间到用户空间的转换- 参见:
-
drawRenderableImage
呈现RenderableImage,在绘制之前应用从图像空间到用户空间的变换。从用户空间到设备空间的转换是通过Graphics2D中的当前Transform完成的。在应用Graphics2D上下文中的变换属性之前,将指定的变换应用于图像。应用的渲染属性包括Clip、Transform和Composite属性。请注意,如果指定的变换是不可逆的,则不会进行渲染。在
Graphics2D对象上设置的渲染提示可能用于渲染RenderableImage。如果需要对特定RenderableImage识别的特定提示进行显式控制,或者如果需要了解使用哪些提示,则应直接从RenderableImage获取RenderedImage并使用drawRenderedImage呈现。- 参数:
img- 要渲染的图像。如果img为空,则此方法不执行任何操作。xform- 从图像空间到用户空间的转换- 参见:
-
drawString
使用Graphics2D上下文中的当前文本属性状态呈现指定String的文本。第一个字符的基线在位置 (x, y在用户空间中。应用的渲染属性包括Clip、Transform、Paint、Font和Composite属性。对于希伯来语和阿拉伯语等脚本系统中的字符,可以从右到左呈现字形,在这种情况下,提供的坐标是基线最左边字符的位置。- 指定者:
drawString在类Graphics中- 参数:
str- 要呈现的字符串x- 应呈现String的位置的 x 坐标y- 应呈现String的位置的 y 坐标- 抛出:
NullPointerException- 如果str是null- 自从:
- 1.0
- 参见:
-
drawString
使用Graphics2D上下文中的当前文本属性状态呈现由指定的String指定的文本。第一个字符的基线在位置 (x, y在用户空间中。应用的渲染属性包括Clip、Transform、Paint、Font和Composite属性。对于希伯来语和阿拉伯语等脚本系统中的字符,可以从右到左呈现字形,在这种情况下,提供的坐标是基线最左边字符的位置。- 参数:
str- 要渲染的Stringx- 应呈现String的位置的 x 坐标y- 应呈现String的位置的 y 坐标- 抛出:
NullPointerException- 如果str是null- 参见:
-
drawString
根据TextAttribute类的规范应用其属性呈现指定迭代器的文本。第一个字符的基线在位置 (x, y) 在用户空间。对于希伯来语和阿拉伯语等脚本系统中的字符,可以从右到左呈现字形,在这种情况下,提供的坐标是基线最左边字符的位置。
- 指定者:
drawString在类Graphics中- 参数:
iterator- 要呈现其文本的迭代器x- 要呈现迭代器文本的 x 坐标y- 要呈现迭代器文本的 y 坐标- 抛出:
NullPointerException- 如果iterator是null- 参见:
-
drawString
根据TextAttribute类的规范应用其属性呈现指定迭代器的文本。第一个字符的基线在位置 (x, y) 在用户空间。对于希伯来语和阿拉伯语等脚本系统中的字符,可以从右到左呈现字形,在这种情况下,提供的坐标是基线最左边字符的位置。
- 参数:
iterator- 要呈现其文本的迭代器x- 要呈现迭代器文本的 x 坐标y- 要呈现迭代器文本的 y 坐标- 抛出:
NullPointerException- 如果iterator是null- 参见:
-
drawGlyphVector
使用Graphics2D上下文的呈现属性呈现指定GlyphVector的文本。应用的渲染属性包括Clip、Transform、Paint和Composite属性。GlyphVector指定来自Font的单个字形。GlyphVector也可以包含字形位置。这是将一组字符渲染到屏幕上的最快方法。- 参数:
g- 要渲染的GlyphVectorx- 用户空间中应呈现字形的 x 位置y- 用户空间中应呈现字形的 y 位置- 抛出:
NullPointerException- 如果g是null。- 参见:
-
fill
使用Graphics2D上下文的设置填充Shape的内部。应用的渲染属性包括Clip、Transform、Paint和Composite。- 参数:
s- 要填充的Shape- 参见:
-
hit
检查指定的Shape是否与设备空间中指定的Rectangle相交。如果onStroke为假,此方法检查指定Shape的内部是否与指定的Rectangle相交。如果onStroke是true,此方法检查指定的Shape轮廓的Stroke是否与指定的Rectangle相交。考虑的渲染属性包括Clip、Transform和Stroke属性。- 参数:
rect- 设备空间中检查命中的区域s-Shape检查命中onStroke- 用于在测试描边或填充形状之间进行选择的标志。如果标志是true,则测试Stroke轮廓。如果标志为false,则测试填充的Shape。- 返回:
true如果命中;false否则。- 参见:
-
getDeviceConfiguration
返回与此Graphics2D关联的设备配置。- 返回:
-
这个
Graphics2D的设备配置。
-
setComposite
为Graphics2D上下文设置Composite。Composite用于所有绘图方法,例如drawImage、drawString、draw和fill。它指定在渲染过程中如何将新像素与图形设备上的现有像素组合。如果此
Graphics2D上下文正在显示屏幕上绘制到Component并且Composite是自定义对象而不是AlphaComposite类的实例,并且如果存在安全管理器,则使用AWTPermission("readDisplayPixels")权限调用其checkPermission方法。- 参数:
comp- 用于渲染的Composite对象- 抛出:
SecurityException- 如果使用自定义Composite对象呈现到屏幕并且设置了安全管理器,并且其checkPermission方法不允许该操作。- 参见:
-
setPaint
为Graphics2D上下文设置Paint属性。使用null Paint对象调用此方法不会对此Graphics2D的当前Paint属性产生任何影响。- 参数:
paint- 在渲染过程中用于生成颜色的Paint对象,或null- 参见:
-
setStroke
为Graphics2D上下文设置Stroke。- 参数:
s- 在渲染过程中用于描边Shape的Stroke对象- 参见:
-
setRenderingHint
为渲染算法设置单个首选项的值。提示类别包括渲染质量控制和渲染过程中的整体时间/质量权衡。请参阅RenderingHints类以了解一些常用键和值的定义。- 参数:
hintKey- 要设置的提示键。hintValue- 指示指定提示类别首选项的值。- 参见:
-
getRenderingHint
返回渲染算法的单个首选项的值。提示类别包括渲染质量控制和渲染过程中的整体时间/质量权衡。请参阅RenderingHints类以了解一些常用键和值的定义。- 参数:
hintKey- 要获取的提示对应的键。- 返回:
-
表示指定提示键值的对象。一些键及其相关值在
RenderingHints类中定义。 - 参见:
-
setRenderingHints
用指定的hints替换渲染算法的所有首选项的值。所有呈现提示的现有值都将被丢弃,新的一组已知提示和值从指定的Map对象初始化。提示类别包括渲染质量控制和渲染过程中的整体时间/质量权衡。请参阅RenderingHints类以了解一些常用键和值的定义。- 参数:
hints- 要设置的渲染提示- 参见:
-
addRenderingHints
为渲染算法设置任意数量的首选项值。仅修改指定Map对象中存在的呈现提示的值。指定对象中不存在的所有其他首选项都保持不变。提示类别包括渲染质量控制和渲染过程中的整体时间/质量权衡。请参阅RenderingHints类以了解一些常用键和值的定义。- 参数:
hints- 要设置的渲染提示- 参见:
-
getRenderingHints
获取渲染算法的首选项。提示类别包括渲染质量控制和渲染过程中的整体时间/质量权衡。返回在一次操作中指定的所有提示键/值对。请参阅RenderingHints类以了解一些常用键和值的定义。- 返回:
-
对包含当前首选项的
RenderingHints实例的引用。 - 参见:
-
translate
public abstract void translate(int x, int y) 将Graphics2D上下文的原点转换为点 (x, y) 在当前坐标系中。修改Graphics2D上下文,使其新原点对应于点 (x, y在Graphics2D上下文的前坐标系中。在此图形上下文上的后续渲染操作中使用的所有坐标都相对于此新原点。 -
translate
public abstract void translate(double tx, double ty) 将当前的Graphics2D Transform与翻译转换连接起来。后续渲染相对于先前位置平移指定距离。这相当于调用 transform(T),其中 T 是由以下矩阵表示的AffineTransform:[ 1 0 tx ] [ 0 1 ty ] [ 0 0 1 ]- 参数:
tx- 沿 x 轴平移的距离ty- 沿 y 轴平移的距离
-
rotate
public abstract void rotate(double theta) 将当前的Graphics2DTransform与旋转变换连接起来。后续渲染相对于先前的原点旋转指定的弧度。这相当于调用transform(R),其中 R 是由以下矩阵表示的AffineTransform:[ cos(theta) -sin(theta) 0 ] [ sin(theta) cos(theta) 0 ] [ 0 0 1 ]以正角度 theta 旋转会将正 x 轴上的点旋转到正 y 轴。- 参数:
theta- 以弧度为单位的旋转角度
-
rotate
public abstract void rotate(double theta, double x, double y) 将当前的Graphics2DTransform与平移的旋转变换连接起来。随后的渲染由一个变换进行变换,该变换是通过平移到指定位置、按指定弧度旋转并平移回与原始平移相同的量而构造的。这等效于以下调用序列:translate(x, y); rotate(theta); translate(-x, -y);以正角度 theta 旋转将正 x 轴上的点旋转到正 y 轴。- 参数:
theta- 以弧度为单位的旋转角度x- 旋转原点的 x 坐标y- 旋转原点的y坐标
-
scale
public abstract void scale(double sx, double sy) 将当前Graphics2DTransform与缩放变换连接起来。根据相对于先前缩放的指定缩放因子调整后续渲染的大小。这相当于调用transform(S),其中 S 是由以下矩阵表示的AffineTransform:[ sx 0 0 ] [ 0 sy 0 ] [ 0 0 1 ]- 参数:
sx- 后续渲染操作中的 X 坐标相对于先前渲染操作的乘数。sy- 后续渲染操作中的 Y 坐标相对于先前渲染操作的乘数。
-
shear
public abstract void shear(double shx, double shy) 将当前的Graphics2DTransform与剪切变换连接起来。后续渲染将根据相对于先前位置的指定乘数进行剪切。这相当于调用transform(SH),其中 SH 是由以下矩阵表示的AffineTransform:[ 1 shx 0 ] [ shy 1 0 ] [ 0 0 1 ]- 参数:
shx- 坐标在正 X 轴方向上移动的乘数,作为其 Y 坐标的函数shy- 坐标在正 Y 轴方向上移动的乘数,作为其 X 坐标的函数
-
transform
根据规则 last-specified-first-applied 将AffineTransform对象与Graphics2D中的Transform组合起来。如果当前Transform为Cx,则与Tx合成的结果为新的TransformCx'。 Cx' 成为这个Graphics2D的当前Transform。用更新后的TransformCx'变换一个点p,相当于先用Tx变换p,再用原来的TransformCx变换结果。换句话说,Cx'(p) = Cx(Tx(p))。如有必要,会制作 Tx 的副本,因此对 Tx 的进一步修改不会影响渲染。- 参数:
Tx- 要与当前Transform组合的AffineTransform对象- 参见:
-
setTransform
覆盖Graphics2D上下文中的转换。警告:此方法应绝不用于在现有变换之上应用新的坐标变换,因为Graphics2D可能已经具有用于其他目的所需的变换,例如渲染 Swing 组件或应用缩放变换以调整打印机的分辨率。要添加坐标变换,请使用
transform、rotate、scale或shear方法。setTransform方法仅用于在渲染后恢复原始Graphics2D变换,如本例所示:// Get the current transform AffineTransform saveAT = g2.getTransform(); // Perform transformation g2d.transform(...); // Render g2d.draw(...); // Restore original transform g2d.setTransform(saveAT);
- 参数:
Tx- 从getTransform方法中检索到的AffineTransform- 参见:
-
getTransform
在Graphics2D上下文中返回当前Transform的副本。- 返回:
Graphics2D上下文中的当前AffineTransform。- 参见:
-
getPaint
返回Graphics2D上下文的当前Paint。- 返回:
-
当前
Graphics2D Paint,它定义了颜色或图案。 - 参见:
-
getComposite
返回Graphics2D上下文中的当前Composite。- 返回:
-
当前的
Graphics2D Composite,它定义了一种合成风格。 - 参见:
-
setBackground
设置Graphics2D上下文的背景颜色。背景颜色用于清除区域。当为Component构造Graphics2D时,背景色继承自Component。在Graphics2D上下文中设置背景颜色只会影响后续的clearRect调用,而不影响Component的背景颜色。要更改Component的背景,请使用Component的适当方法。- 参数:
color- 在后续调用clearRect时使用的背景颜色- 参见:
-
getBackground
返回用于清除区域的背景颜色。- 返回:
-
当前
Graphics2D Color,它定义了背景颜色。 - 参见:
-
getStroke
返回Graphics2D上下文中的当前Stroke。- 返回:
-
当前
Graphics2D Stroke,它定义了线条样式。 - 参见:
-
clip
将当前Clip与指定Shape的内部相交,并将Clip设置为生成的交集。指定的Shape在与当前的Clip相交之前用当前的Graphics2DTransform进行转换。该方法用于使电流Clip变小。要使Clip变大,请使用setClip。这用户剪辑通过此方法修改的与设备边界和可见性相关的裁剪无关。如果之前没有设置剪辑,或者如果剪辑已使用带有
null参数的setClip清除,则指定的Shape将成为新的用户剪辑。由于此方法将指定形状与当前剪辑相交,因此它将为
null形状抛出NullPointerException除非用户剪辑也是null。因此,不建议使用null参数调用此方法。- 参数:
s- 要与当前Clip相交的Shape。此方法更新当前的Clip。- 抛出:
NullPointerException- 如果s是null并且当前设置了用户剪辑。
-
getFontRenderContext
在此Graphics2D上下文中获取Font的渲染上下文。FontRenderContext封装了应用程序提示,例如抗锯齿和分数指标,以及目标设备特定信息,例如每英寸点数。在使用执行印刷格式的对象(例如Font和TextLayout)时,应用程序应提供此信息。当各种呈现提示已应用于文本呈现时,执行自己的布局并且需要准确测量字形的各种特征(例如前进和行高)的应用程序也应提供此信息。- 返回:
- 对 FontRenderContext 实例的引用。
- 自从:
- 1.2
- 参见:
-