- java.lang.Object
-
- java.awt.Graphics
-
- java.awt.Graphics2D
-
public abstract class Graphics2D extends Graphics
这个Graphics2D类扩展了Graphics类,以提供对几何,坐标变换,颜色管理和文本布局的更复杂的控制。 这是在Java(tm)平台上呈现二维形状,文字和图像的基础类。坐标空间
传递给Graphics2D对象的所有坐标均在与设备无关的称为“用户空间”的坐标系中指定,由应用程序使用。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转换为设备空间,并与由Windows和设备扩展区的可见性定义的设备片段组合。 用户剪辑和设备剪辑的组合定义了复合剪辑 ,该剪辑确定了最终裁剪区域。 渲染系统不会修改用户剪辑以反映所生成的复合剪辑。 - 确定要呈现的颜色。
- 使用
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,则边界框被视为已经在用户空间中。 - 源
Image的边界框使用当前的Transform从用户空间转换为设备空间。 注意,转换边界框的结果不一定导致设备空间中的矩形区域。 -
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上。 笔可以部分地落在两个像素上。 不需要为宽笔选择偏移方向,因为沿着笔遍历边缘发生的混合使笔的子像素位置对用户可见。 另一方面,当通过将27048499274646提示键设置为
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
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protectedGraphics2D()构造一个新的Graphics2D对象。
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 abstract voidaddRenderingHints(Map<?,?> hints)为渲染算法设置任意数量的首选项的值。abstract voidclip(Shape s)将当前的Clip与内部指定的Shape,并将Clip设置为Clip的交点。abstract voiddraw(Shape s)使用当前的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)呈现一个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)绘制一个填充有当前颜色的3-D高亮矩形。abstract ColorgetBackground()返回用于清除区域的背景颜色。abstract CompositegetComposite()返回当前Composite在Graphics2D环境。abstract GraphicsConfigurationgetDeviceConfiguration()返回与此Graphics2D关联的设备配置。abstract FontRenderContextgetFontRenderContext()获取的渲染上下文Font这个范围内Graphics2D上下文。abstract PaintgetPaint()返回当前Paint的的Graphics2D环境。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上下文中的变换。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 )。-
Methods inherited from class 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像素宽,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)绘制一个填充有当前颜色的3-D高亮矩形。 矩形的边缘被突出显示,使其看起来好像边缘是从左上角倾斜并点亮。 用于突出显示效果和填充的颜色由当前的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为空,此方法不起作用。 -
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,则此方法不起作用。 -
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,则此方法不起作用。 -
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为空,此方法不起作用。 -
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类的实例,如果有一个安全管理器,它的checkPermission方法被调用一个AWTPermission("readDisplayPixels")权限。- 参数
-
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与平移变换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- 坐标根据其Y坐标在正X轴方向上移位的乘数 -
shy- 坐标在正Y轴方向上移动的乘数作为其X坐标的函数
-
transform
public abstract void transform(AffineTransform Tx)
组成一个AffineTransform与对象Transform在此Graphics2D根据规则最后指定第一涂覆。 如果当前的Transform是Cx,与Tx的组合结果是一个新的TransformCx'。 Cx'成为Transform的Graphics2D。 通过更新的TransformCx'转换点p等价于首先通过Tx转换p,然后将结果转换为原始的TransformCx。 换句话说,Cx'(p)= Cx(Tx(p))。 如果需要,可以复制Tx,因此对Tx的进一步修改不会影响渲染。- 参数
-
Tx-AffineTransform对象由当前组成的Transform - 另请参见:
-
setTransform(java.awt.geom.AffineTransform),AffineTransform
-
setTransform
public abstract void setTransform(AffineTransform Tx)
在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-所述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,并将Clip设置为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
-
-