- java.lang.Object
-
- java.awt.Graphics
-
- java.awt.Graphics2D
-
public abstract class Graphics2D extends Graphics
此Graphics2D类扩展了Graphics类,以提供对几何,坐标转换,颜色管理和文本布局的更复杂控制。 这是在Java(tm)平台上渲染二维形状,文本和图像的基础类。坐标空间
传递给Graphics2D对象的所有坐标都在一个名为User Space的设备无关坐标系中指定,该系统由应用程序使用。Graphics2D对象包含AffineTransform对象作为其呈现状态的一部分,该对象定义如何将设备空间中的坐标从用户空间转换为设备相关坐标。设备空间中的坐标通常指的是单个设备像素,并且在这些像素之间的无限薄间隙上对齐。 一些
Graphics2D对象可用于捕获渲染操作以存储到图形元文件中,以便稍后在具有未知物理分辨率的具体设备上回放。 由于在捕获渲染操作时可能不知道分辨率,因此Graphics2D Transform设置为将用户坐标转换为近似于目标设备的预期分辨率的虚拟设备空间。 如果估计不正确,可能需要在回放时应用进一步的转换。渲染属性对象执行的某些操作发生在设备空间中,但所有
Graphics2D方法都采用用户空间坐标。每个
Graphics2D对象都与一个目标相关联,该目标定义了渲染的位置。GraphicsConfiguration对象定义渲染目标的特征,例如像素格式和分辨率。 在Graphics2D对象的整个生命周期中使用相同的渲染目标。当创建一个
Graphics2D目的,GraphicsConfiguration指定default transform为目标Graphics2D(一个Component或Image)。 该默认变换将用户空间坐标系映射到屏幕和打印机设备坐标,使得原点映射到设备的目标区域的左上角,增加的X坐标向右延伸并且增加的Y坐标向下延伸。 默认转换的缩放设置为接近72 dpi的设备的标识,例如屏幕设备。 对于高分辨率设备(例如打印机),默认变换的缩放设置为每平方英寸约72个用户空间坐标。 对于图像缓冲区,默认转换是Identity转换。渲染过程
渲染过程可以分为四个阶段,由Graphics2D渲染属性控制。 渲染器可以优化许多这些步骤,或者通过缓存未来调用的结果,将多个虚拟步骤折叠成单个操作,或者通过将各种属性识别为可以通过修改操作的其他部分来消除的常见简单情况。渲染过程中的步骤是:
- 确定要渲染的内容。
- 将渲染操作约束到当前的
Clip。 该Clip由指定Shape在用户空间中,并通过使用各种夹操作方法的程序控制Graphics和Graphics2D。 此用户剪辑由当前Transform转换为设备空间,并与设备剪辑组合, 设备剪辑由窗口和设备范围的可见性定义。 用户剪辑和设备剪辑的组合定义了复合剪辑 ,它决定了最终裁剪区域。 渲染系统不会修改用户剪辑以反映生成的复合剪辑。 - 确定要渲染的颜色。
- 使用
Graphics2D上下文中的当前Composite属性将颜色应用于目标绘图表面。
三种类型的渲染操作以及每种渲染过程的详细信息如下:-
Shapeoperations- 如果该操作是一个
draw(Shape)操作,则createStrokedShape上的当前方法Stroke在属性Graphics2D被用于上下文构造新Shape对象包含指定的轮廓Shape。 -
Shape使用Graphics2D上下文中的当前Transform从用户空间转换为设备空间。 - 所述的轮廓
Shape被使用所提取的getPathIterator的方法Shape,它返回一个PathIterator对象迭代沿的边界Shape。 - 如果
Graphics2D对象不能处理弯曲区段,所述PathIterator对象返回然后它可以调用备用getPathIterator的方法Shape,其展平了Shape。 -
Graphics2D上下文中的当前Paint被查询为PaintContext,其指定要在设备空间中呈现的颜色。
- 如果该操作是一个
- Text operations
- 以下步骤用于确定呈现指示的
String所需的字形集:- 如果参数是
String,那么当前Font在Graphics2D背景下被要求在中的Unicode字符转换String与任何基本布局和成形算法的字体工具为一组字形的呈现。 - 如果参数是
AttributedCharacterIterator,则要求迭代器使用其嵌入的字体属性将自身转换为TextLayout。TextLayout实现了更复杂的字形布局算法,可以针对不同书写方向的多种字体自动执行Unicode双向布局调整。 - 如果参数是
GlyphVector,则GlyphVector对象已包含适当的字体特定字形代码,并且每个字形的位置都有显式坐标。
- 如果参数是
- 查询当前的
Font以获取指示的字形的轮廓。 这些轮廓被视为用户空间中的形状,相对于在步骤1中确定的每个字形的位置。 - 字符轮廓如上面
Shapeoperations所示填写 。 - 查询当前
Paint的PaintContext,它指定要在设备空间中呈现的颜色。
- 以下步骤用于确定呈现指示的
-
ImageOperations- 感兴趣的区域由源
Image的边界框定义。 此边界框在图像空间中指定,该空间是Image对象的本地坐标系。 - 如果
AffineTransform传递给drawImage(Image, AffineTransform, ImageObserver),则使用AffineTransform将边界框从图像空间转换为用户空间。 如果未提供AffineTransform,则将边界框视为已在用户空间中。 - 使用当前的
Transform将源Image的边界框从用户空间转换为设备空间。 请注意,转换边界框的结果不一定会导致设备空间中的矩形区域。 -
Image对象确定要渲染的颜色,根据当前Transform指定的源到目标坐标映射和可选的图像变换进行采样。
- 感兴趣的区域由源
默认渲染属性
Graphics2D渲染属性的默认值为:-
Paint -
Component的颜色。 -
Font -
Font的Component。 -
Stroke - 方形笔,线宽为1,无划线,斜接段连接和方形端盖。
-
Transform -
getDefaultTransform为GraphicsConfiguration的Component。 -
Composite -
AlphaComposite.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是BasicStroke,宽度为1且没有BasicStroke,屏幕绘制的默认变换是Identity变换。以下两个规则提供可预测的呈现行为,无论是使用别名还是抗锯齿。
- 设备坐标定义在设备像素之间,这避免了别名和抗锯齿渲染之间的任何不一致结果。 如果坐标被定义为在像素的中心,则由形状(例如矩形)覆盖的一些像素将仅被覆盖一半。 使用别名渲染时,半覆盖的像素将在形状内或形状外部渲染。 使用抗锯齿渲染时,形状整个边缘上的像素将被覆盖一半。 另一方面,由于坐标被定义为在像素之间,因此像矩形的形状将不具有半覆盖的像素,无论是否使用抗锯齿来渲染。
- 使用
BasicStroke对象描边的线和路径可以“标准化”,以便在定位在可绘制的各个点上时提供轮廓的一致渲染,以及是否使用别名或抗锯齿渲染进行绘制。 此标准化过程由KEY_STROKE_CONTROL提示控制。 没有指定精确的归一化算法,但是这种归一化的目标是确保线条以一致的视觉外观呈现,无论它们如何落在像素网格上,并在抗锯齿模式下促进更加坚固的水平和垂直线条,使它们类似他们的非抗锯齿对应物更紧密。 典型的归一化步骤可以将抗锯齿线端点提升到像素中心以减少混合量或调整非抗锯齿线的子像素定位,使得浮点线宽度以相等的可能性舍入到偶数或奇数像素计数。 此过程可以将端点移动最多半个像素(通常沿两个轴向正无穷大),以促进这些一致的结果。
以下对常规遗留方法的定义与默认属性设置下先前指定的行为完全相同:
- 对于
fill操作,包括fillRect,fillRoundRect,fillOval,fillArc,fillPolygon,并clearRect,fill,现在可以与所需称为Shape。 例如,填充矩形时:fill(new Rectangle(x, y, w, h));叫做。 - 同样,对于平局操作,包括
drawLine,drawRect,drawRoundRect,drawOval,drawArc,drawPolyline,并drawPolygon,draw,现在可以与所需称为Shape。 例如,绘制矩形时:draw(new Rectangle(x, y, w, h));叫做。 - 该
draw3DRect个fill3DRect方法是在条款实施drawLine种fillRect方法在Graphics类会在当前谓语他们的行为Stroke个Paint的对象Graphics2D上下文。 此类使用当前Color版本覆盖那些实现,覆盖当前的Paint,并使用fillRect来描述与先前存在的方法完全相同的行为,而不管当前Stroke的设置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);
- 另请参见:
-
RenderingHints
-
-
构造方法摘要
构造方法 变量 构造器 描述 protectedGraphics2D()构造一个新的Graphics2D对象。
-
方法摘要
所有方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 abstract voidaddRenderingHints(Map<?,?> hints)设置渲染算法的任意数量的首选项的值。abstract voidclip(Shape s)将当前Clip与指定的Shape的内部Shape,并将Clip设置为生成的交点。abstract voiddraw(Shape s)使用当前Graphics2D上下文的设置Shape的轮廓。voiddraw3DRect(int x, int y, int width, int height, boolean raised)绘制指定矩形的三维突出显示轮廓。abstract voiddrawGlyphVector(GlyphVector g, float x, float y)使用Graphics2D上下文的渲染属性呈现指定的GlyphVector的文本。abstract voiddrawImage(BufferedImage img, BufferedImageOp op, int x, int y)呈现一个BufferedImage被过滤与BufferedImageOp。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 voidfill(Shape s)使用Graphics2D上下文的设置填充Shape的内部。voidfill3DRect(int x, int y, int width, int height, boolean raised)绘制一个用当前颜色填充的三维高亮矩形。abstract ColorgetBackground()返回用于清除区域的背景颜色。abstract CompositegetComposite()返回Graphics2D上下文中的当前Composite。abstract GraphicsConfigurationgetDeviceConfiguration()返回与此Graphics2D关联的设备配置。abstract FontRenderContextgetFontRenderContext()在此Graphics2D上下文中获取Font的呈现上下文。abstract PaintgetPaint()返回Graphics2D上下文的当前Paint。abstract ObjectgetRenderingHint(RenderingHints.Key hintKey)返回呈现算法的单个首选项的值。abstract RenderingHintsgetRenderingHints()获取渲染算法的首选项。abstract StrokegetStroke()返回Graphics2D上下文中的当前Stroke。abstract AffineTransformgetTransform()返回Graphics2D上下文中当前Transform的Graphics2D。abstract booleanhit(Rectangle rect, Shape s, boolean onStroke)检查指定的Shape是否与设备空间中指定的Shape相交。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)设置Composite为Graphics2D上下文。abstract voidsetPaint(Paint paint)设置Graphics2D上下文的Paint属性。abstract voidsetRenderingHint(RenderingHints.Key hintKey, Object hintValue)设置渲染算法的单个首选项的值。abstract voidsetRenderingHints(Map<?,?> hints)使用指定的hints替换渲染算法的所有首选项的值。abstract voidsetStroke(Stroke s)设置Stroke为Graphics2D上下文。abstract voidsetTransform(AffineTransform Tx)覆盖Graphics2D上下文中的Transform。abstract voidshear(double shx, double shy)将当前的Graphics2DTransform与剪切变换连接起来。abstract voidtransform(AffineTransform Tx)组成一个AffineTransform与对象Transform在此Graphics2D根据规则最后指定第一涂覆。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)绘制指定矩形的三维突出显示轮廓。 矩形的边缘突出显示,使它们看起来是斜角并从左上角点亮。用于突出显示效果的颜色基于当前颜色确定。 生成的矩形覆盖了
width + 1像素宽,height + 1像素高的区域。 此方法仅使用当前的Color并忽略当前的Paint。- 重写:
-
draw3DRect类Graphics - 参数
-
x- 要绘制的矩形的x坐标。 -
y- 要绘制的矩形的y坐标。 -
width- 要绘制的矩形的宽度。 -
height- 要绘制的矩形的高度。 -
raised- 一个布尔值,用于确定矩形是显示在曲面上方还是沉入曲面中。 - 另请参见:
-
Graphics.fill3DRect(int, int, int, int, boolean)
-
fill3DRect
public void fill3DRect(int x, int y, int width, int height, boolean raised)绘制一个用当前颜色填充的三维高亮矩形。 突出显示矩形的边缘,使其看起来好像边缘从左上角开始倾斜并点亮。 用于突出显示效果和填充的颜色由当前Color确定。 此方法仅使用当前的Color并忽略当前的Paint。- 重写:
-
fill3DRect在类Graphics - 参数
-
x- 要填充的矩形的x坐标。 -
y- 要填充的矩形的y坐标。 -
width- 要填充的矩形的宽度。 -
height- 要填充的矩形的高度。 -
raised- 一个布尔值,用于确定矩形是显示在曲面上方还是蚀刻到曲面中。 - 另请参见:
-
Graphics.draw3DRect(int, int, int, int, boolean)
-
draw
public abstract void draw(Shape s)
使用当前Graphics2D上下文的设置Shape的轮廓。 应用的渲染属性包括Clip,Transform,Paint,Composite和Stroke属性。
-
drawImage
public abstract boolean drawImage(Image img, AffineTransform xform, ImageObserver obs)
渲染图像,在绘制之前将图像空间的变换应用到用户空间。 从用户空间变换到设备空间与当前进行Transform在Graphics2D。 在应用Graphics2D上下文中的transform属性之前,将指定的变换应用于图像。 应用的呈现属性包括:Clip,Transform和Composite属性。 请注意,如果指定的变换是不可逆的,则不进行渲染。- 参数
-
img- 要渲染的指定图像。 如果img为null,则此方法不执行任何img。 -
xform- 从图像空间到用户空间的转换 -
obs-的ImageObserver被通知为多个的Image被转换 - 结果
-
true如果Image已完全加载并完全呈现,或者它为null;false如果仍在加载Image。 - 另请参见:
-
transform(java.awt.geom.AffineTransform),setTransform(java.awt.geom.AffineTransform),setComposite(java.awt.Composite),clip(java.awt.Shape),Graphics.setClip(int, int, int, int)
-
drawImage
public abstract void drawImage(BufferedImage img, BufferedImageOp op, int x, int y)
呈现一个BufferedImage被过滤与BufferedImageOp。 应用的呈现属性包括:Clip,Transform和Composite属性。 这相当于:img1 = op.filter(img, null); drawImage(img1, new AffineTransform(1f,0f,0f,1f,x,y), null);- 参数
-
op- 渲染前应用于图像的滤镜 -
img- 要呈现的指定BufferedImage。 如果img为null,则此方法不执行任何img。 -
x- 用户空间中呈现图像左上角的位置的x坐标 -
y- 用户空间中呈现图像左上角的位置的y坐标 - 另请参见:
-
transform(java.awt.geom.AffineTransform),setTransform(java.awt.geom.AffineTransform),setComposite(java.awt.Composite),clip(java.awt.Shape),Graphics.setClip(int, int, int, int)
-
drawRenderedImage
public abstract void drawRenderedImage(RenderedImage img, AffineTransform xform)
渲染RenderedImage,在绘制之前将图像空间的变换应用到用户空间。 从用户空间变换到设备空间与当前进行Transform在Graphics2D。 在应用Graphics2D上下文中的transform属性之前,将指定的变换应用于图像。 应用的呈现属性包括:Clip,Transform和Composite属性。 请注意,如果指定的变换是不可逆的,则不进行渲染。- 参数
-
img- 要渲染的图像。 如果img为null,则此方法不执行任何img。 -
xform- 从图像空间到用户空间的转换 - 另请参见:
-
transform(java.awt.geom.AffineTransform),setTransform(java.awt.geom.AffineTransform),setComposite(java.awt.Composite),clip(java.awt.Shape),Graphics.setClip(int, int, int, int)
-
drawRenderableImage
public abstract void drawRenderableImage(RenderableImage img, AffineTransform xform)
渲染RenderableImage,在绘制之前将图像空间的变换应用到用户空间。 从用户空间变换到设备空间与当前进行Transform在Graphics2D。 在应用Graphics2D上下文中的transform属性之前,将指定的变换应用于图像。 应用的呈现属性包括:Clip,Transform和Composite属性。 请注意,如果指定的变换是不可逆的,则不进行渲染。在
Graphics2D对象上设置的渲染提示可能用于渲染RenderableImage。 如果显式控制需要在由一个特定的识别特定提示RenderableImage,或者如果需要,其中用于提示知识,则RenderedImage应直接从所获得的RenderableImage使用和呈现drawRenderedImage。- 参数
-
img- 要渲染的图像。 如果img为null,则此方法不执行任何img。 -
xform- 从图像空间到用户空间的转换 - 另请参见:
-
transform(java.awt.geom.AffineTransform),setTransform(java.awt.geom.AffineTransform),setComposite(java.awt.Composite),clip(java.awt.Shape),Graphics.setClip(int, int, int, int),drawRenderedImage(java.awt.image.RenderedImage, java.awt.geom.AffineTransform)
-
drawString
public abstract void drawString(String str, int x, int y)
使用Graphics2D上下文中的当前文本属性状态呈现指定的String的文本。 第一个字符的基线位于用户空间中的位置( x , y )。 应用的渲染属性包括Clip,Transform,Paint,Font和Composite属性。 对于希伯来语和阿拉伯语等脚本系统中的字符,可以从右到左呈现字形,在这种情况下,提供的坐标是基线上最左边字符的位置。- Specified by:
-
drawString在类Graphics - 参数
-
str- 要呈现的字符串 -
x- 应呈现String的位置的x坐标 -
y- 应呈现String的位置的y坐标 - 异常
-
NullPointerException- 如果str是null - 从以下版本开始:
- 1.0
- 另请参见:
-
Graphics.drawBytes(byte[], int, int, int, int),Graphics.drawChars(char[], int, int, int, int)
-
drawString
public abstract void drawString(String str, float x, float y)
使用Graphics2D上下文中的当前文本属性状态呈现指定的String指定的文本。 第一个字符的基线位于用户空间中的位置( x , y )。 应用的渲染属性包括Clip,Transform,Paint,Font和Composite属性。 对于希伯来语和阿拉伯语等脚本系统中的字符,可以从右到左呈现字形,在这种情况下,提供的坐标是基线上最左边字符的位置。- 参数
-
str- 要渲染的String -
x- 应呈现String的位置的x坐标 -
y- 应呈现String的位置的y坐标 - 异常
-
NullPointerException- 如果str是null - 另请参见:
-
setPaint(java.awt.Paint),Graphics.setColor(java.awt.Color),Graphics.setFont(java.awt.Font),setTransform(java.awt.geom.AffineTransform),setComposite(java.awt.Composite),Graphics.setClip(int, int, int, int)
-
drawString
public abstract void drawString(AttributedCharacterIterator iterator, int x, int y)
根据TextAttribute类的规范,呈现指定迭代器的文本,并应用其属性。第一个字符的基线位于用户空间中的位置( x , y )。 对于希伯来语和阿拉伯语等脚本系统中的字符,可以从右到左呈现字形,在这种情况下,提供的坐标是基线上最左边字符的位置。
- Specified by:
-
drawString在类Graphics - 参数
-
iterator- 要呈现其文本的迭代器 -
x- 要呈现迭代器文本的x坐标 -
y- 迭代器文本的y坐标 - 异常
-
NullPointerException- 如果iterator是null - 另请参见:
-
setPaint(java.awt.Paint),Graphics.setColor(java.awt.Color),setTransform(java.awt.geom.AffineTransform),setComposite(java.awt.Composite),Graphics.setClip(int, int, int, int)
-
drawString
public abstract void drawString(AttributedCharacterIterator iterator, float x, float y)
根据TextAttribute类的规范,呈现指定迭代器的文本,并应用其属性。第一个字符的基线位于用户空间中的位置( x , y )。 对于希伯来语和阿拉伯语等脚本系统中的字符,可以从右到左呈现字形,在这种情况下,提供的坐标是基线上最左边字符的位置。
- 参数
-
iterator- 要呈现其文本的迭代器 -
x- 要渲染迭代器文本的x坐标 -
y- 要渲染迭代器文本的y坐标 - 异常
-
NullPointerException- 如果iterator是null - 另请参见:
-
setPaint(java.awt.Paint),Graphics.setColor(java.awt.Color),setTransform(java.awt.geom.AffineTransform),setComposite(java.awt.Composite),Graphics.setClip(int, int, int, int)
-
drawGlyphVector
public abstract void drawGlyphVector(GlyphVector g, float x, float y)
使用Graphics2D上下文的渲染属性呈现指定的GlyphVector的文本。 应用的呈现属性包括:Clip,Transform,Paint和Composite属性。 该GlyphVector规定从各个字形Font。GlyphVector还可以包含字形位置。 这是将一组字符渲染到屏幕的最快方法。- 参数
-
g- 要渲染的GlyphVector -
x- 用户空间中应该呈现字形的x位置 -
y- 用户空间中应该呈现字形的y位置 - 异常
-
NullPointerException- 如果g是null。 - 另请参见:
-
Font.createGlyphVector(java.awt.font.FontRenderContext, java.lang.String),GlyphVector,setPaint(java.awt.Paint),Graphics.setColor(java.awt.Color),setTransform(java.awt.geom.AffineTransform),setComposite(java.awt.Composite),Graphics.setClip(int, int, int, int)
-
fill
public abstract void fill(Shape s)
使用Graphics2D上下文的设置填充Shape的内部。 应用的呈现属性包括:Clip,Transform,Paint和Composite。
-
hit
public abstract boolean hit(Rectangle rect, Shape s, boolean onStroke)
检查指定的Shape是否与设备空间中指定的Shape相交。 如果onStroke是假的,指定的内部此方法检查是否Shape相交指定Rectangle。 如果onStroke是true,该方法检查是否Stroke指定的Shape轮廓相交指定Rectangle。 考虑到的呈现属性包括:Clip,Transform和Stroke属性。- 参数
-
rect- 设备空间中用于检查命中的区域 -
s- 检查命中的Shape -
onStroke- 用于在测试描边或填充形状之间进行选择的标志。 如果标志为true,则测试Stroke轮廓。 如果标志为false,则测试填充的Shape。 - 结果
-
true若有打击; 否则为false。 - 另请参见:
-
setStroke(java.awt.Stroke),fill(java.awt.Shape),draw(java.awt.Shape),transform(java.awt.geom.AffineTransform),setTransform(java.awt.geom.AffineTransform),clip(java.awt.Shape),Graphics.setClip(int, int, int, int)
-
getDeviceConfiguration
public abstract GraphicsConfiguration getDeviceConfiguration()
返回与此Graphics2D关联的设备配置。- 结果
-
Graphics2D的设备配置
-
setComposite
public abstract void setComposite(Composite comp)
设置Composite为Graphics2D上下文。 该Composite被所有的绘图方法,如所用drawImage,drawString,draw,和fill。 它指定在渲染过程中如何将新像素与图形设备上的现有像素组合。如果此
Graphics2D上下文在显示屏幕上绘制到Component并且Composite是自定义对象而不是AlphaComposite类的实例,并且如果有安全管理器,则使用AWTPermission("readDisplayPixels")权限调用其checkPermission方法。- 参数
-
comp- 要用于呈现的Composite对象 - 异常
-
SecurityException- 如果正在使用自定义Composite对象呈现到屏幕并且设置了安全管理器且其checkPermission方法不允许该操作。 - 另请参见:
-
Graphics.setXORMode(java.awt.Color),Graphics.setPaintMode(),getComposite(),AlphaComposite,SecurityManager.checkPermission(java.security.Permission),AWTPermission
-
setPaint
public abstract void setPaint(Paint paint)
设置Graphics2D上下文的Paint属性。 使用null Paint对象调用此方法不会对此Graphics2D的当前Paint属性产生任何影响。- 参数
-
paint- 在渲染过程中用于生成颜色的Paint对象,或null - 另请参见:
-
Graphics.setColor(java.awt.Color),getPaint(),GradientPaint,TexturePaint
-
setStroke
public abstract void setStroke(Stroke s)
设置Stroke为Graphics2D上下文。- 参数
-
s-所述Stroke对象要用于中风Shape在呈现过程中 - 另请参见:
-
BasicStroke,getStroke()
-
setRenderingHint
public abstract void setRenderingHint(RenderingHints.Key hintKey, Object hintValue)
设置渲染算法的单个首选项的值。 提示类别包括渲染过程中渲染质量和总体时间/质量权衡的控制。 有关一些常用键和值的定义,请参阅RenderingHints类。- 参数
-
hintKey- 要设置的提示的关键字。 -
hintValue- 指示指定提示类别的首选项的值。 - 另请参见:
-
getRenderingHint(RenderingHints.Key),RenderingHints
-
getRenderingHint
public abstract Object getRenderingHint(RenderingHints.Key hintKey)
返回呈现算法的单个首选项的值。 提示类别包括渲染过程中渲染质量和总体时间/质量权衡的控制。 有关一些常用键和值的定义,请参阅RenderingHints类。- 参数
-
hintKey- 要获取的提示对应的密钥。 - 结果
-
表示指定提示键值的对象。
某些键及其关联值在
RenderingHints类中定义。 - 另请参见:
-
RenderingHints,setRenderingHint(RenderingHints.Key, Object)
-
setRenderingHints
public abstract void setRenderingHints(Map<?,?> hints)
使用指定的hints替换渲染算法的所有首选项的值。 将丢弃所有呈现提示的现有值,并从指定的Map对象初始化新的已知提示和值集。 提示类别包括渲染过程中渲染质量和总体时间/质量权衡的控制。 有关一些常用键和值的定义,请参阅RenderingHints类。- 参数
-
hints- 要设置的渲染提示 - 另请参见:
-
getRenderingHints(),RenderingHints
-
addRenderingHints
public abstract void addRenderingHints(Map<?,?> hints)
设置渲染算法的任意数量的首选项的值。 仅修改指定的Map对象中存在的呈现提示的值。 指定对象中不存在的所有其他首选项保持不变。 提示类别包括渲染过程中渲染质量和总体时间/质量权衡的控制。 有关一些常用键和值的定义,请参阅RenderingHints类。- 参数
-
hints- 要设置的渲染提示 - 另请参见:
-
RenderingHints
-
getRenderingHints
public abstract RenderingHints getRenderingHints()
获取渲染算法的首选项。 提示类别包括渲染过程中渲染质量和总体时间/质量权衡的控制。 返回在一次操作中指定的所有提示键/值对。 有关一些常用键和值的定义,请参阅RenderingHints类。- 结果
-
对包含当前首选项的
RenderingHints实例的引用。 - 另请参见:
-
RenderingHints,setRenderingHints(Map)
-
translate
public abstract void translate(int x, int y)将Graphics2D上下文的原点转换为当前坐标系中的点( x , y )。 变量Graphics2D上下文,使其新原点对应于Graphics2D上下文的前坐标系中的点( x , y )。 在此图形上下文的后续渲染操作中使用的所有坐标都与此新原点相关。
-
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 ]以正角度θ旋转使正x轴上的点朝向正y轴旋转。- 参数
-
theta- 以弧度表示的旋转角度
-
rotate
public abstract void rotate(double theta, double x, double y)将当前的Graphics2DTransform与已转换的旋转变换连接在一起。 随后的渲染通过变换进行变换,该变换通过平移到指定的位置,旋转指定的弧度,并向后平移与原始平移相同的量来构造。 这相当于以下调用序列:translate(x, y); rotate(theta); translate(-x, -y);以正角度θ旋转使正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
public abstract void transform(AffineTransform Tx)
组成一个AffineTransform与对象Transform在此Graphics2D根据规则最后指定第一涂覆。 如果当前Transform是Cx,则使用Tx的合成结果是新的TransformCx'。 Cx'成为Transform的当前Graphics2D。 通过更新的TransformCx'转换点p相当于首先将p转换为Tx,然后将结果转换为原始的TransformCx。 换句话说,Cx'(p)= Cx(Tx(p))。 如有必要,可以复制Tx,因此对Tx的进一步修改不会影响渲染。- 参数
-
Tx- 用当前Transform组成的AffineTransform对象 - 另请参见:
-
setTransform(java.awt.geom.AffineTransform),AffineTransform
-
setTransform
public abstract void setTransform(AffineTransform Tx)
覆盖Graphics2D上下文中的Transform。 警告: 永远不应该使用此方法在现有变换之上应用新的坐标变换,因为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-所述AffineTransform这是从检索到getTransform方法 - 另请参见:
-
transform(java.awt.geom.AffineTransform),getTransform(),AffineTransform
-
getTransform
public abstract AffineTransform getTransform()
返回Graphics2D上下文中当前Transform的Graphics2D。- 结果
-
目前
AffineTransform在Graphics2D上下文中。 - 另请参见:
-
transform(java.awt.geom.AffineTransform),setTransform(java.awt.geom.AffineTransform)
-
getPaint
public abstract Paint getPaint()
返回Graphics2D上下文的当前Paint。- 结果
-
当前的
Graphics2D Paint,它定义了颜色或图案。 - 另请参见:
-
setPaint(java.awt.Paint),Graphics.setColor(java.awt.Color)
-
getComposite
public abstract Composite getComposite()
返回Graphics2D上下文中的当前Composite。- 结果
-
当前的
Graphics2D Composite,它定义了合成样式。 - 另请参见:
-
setComposite(java.awt.Composite)
-
setBackground
public abstract void setBackground(Color color)
设置Graphics2D上下文的背景颜色。 背景颜色用于清除区域。 为Graphics2D构造Component,背景颜色继承自Component。 设置在背景色Graphics2D方面仅影响后续clearRect调用,而不是背景色Component。 要改变的背景Component,使用适当的方法Component。- 参数
-
color- 后续调用clearRect使用的背景颜色 - 另请参见:
-
getBackground(),Graphics.clearRect(int, int, int, int)
-
getBackground
public abstract Color getBackground()
返回用于清除区域的背景颜色。- 结果
-
当前的
Graphics2D Color,它定义了背景颜色。 - 另请参见:
-
setBackground(java.awt.Color)
-
getStroke
public abstract Stroke getStroke()
返回Graphics2D上下文中的当前Stroke。- 结果
-
当前的
Graphics2D Stroke,它定义了线条样式。 - 另请参见:
-
setStroke(java.awt.Stroke)
-
clip
public abstract void clip(Shape s)
将当前Clip与指定的Shape的内部Shape,并将Clip设置为生成的交点。 指定Shape与当前转化Graphics2DTransform与当前正在相交之前Clip。 此方法用于使当前的Clip更小。 要使Clip更大,请使用setClip。 通过此方法修改的用户剪辑独立于与设备边界和可见性关联的剪辑。 如果先前未设置剪辑,或者已使用setClip使用null参数清除剪辑,则指定的Shape将成为新的用户剪辑。- 参数
-
s-Shape与当前的Clip相交。 如果s是null,则此方法将清除当前的Clip。
-
getFontRenderContext
public abstract FontRenderContext getFontRenderContext()
在此Graphics2D上下文中获取Font的呈现上下文。FontRenderContext封装了应用程序提示,例如抗锯齿和小数度量,以及目标设备特定信息,如每英寸点数。 当使用执行印刷格式的对象时,应用程序应提供此信息,例如Font和TextLayout。 此信息还应由执行其自身布局的应用程序提供,并且需要在将各种渲染提示应用于文本渲染时精确测量字形的各种特征(例如高度和行高)。- 结果
- 对FontRenderContext实例的引用。
- 从以下版本开始:
- 1.2
- 另请参见:
-
FontRenderContext,Font.createGlyphVector(java.awt.font.FontRenderContext, java.lang.String),TextLayout
-
-