- 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
属性将颜色应用于目标绘图面。
这三种渲染操作,以及它们每个特定渲染过程的细节是:-
Shape
operations- 如果该操作是一个
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中确定的每个字形的位置的形状。 - 字符轮廓填充如上所述
Shape
operations 。 - 当前的
Paint
被查询了一个PaintContext
,它指定了在设备空间中渲染的颜色。
- 以下步骤用于确定呈现所指示的
-
Image
Operations- 感兴趣区域由源
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 描述 protected
Graphics2D()
构造一个新的Graphics2D
对象。
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 abstract void
addRenderingHints(Map<?,?> hints)
为渲染算法设置任意数量的首选项的值。abstract void
clip(Shape s)
将当前的Clip
与内部指定的Shape
,并将Clip
设置为Clip
的交点。abstract void
draw(Shape s)
使用当前的Graphics2D
上下文的设置来Shape
的轮廓。void
draw3DRect(int x, int y, int width, int height, boolean raised)
绘制指定矩形的3-D高亮轮廓。abstract void
drawGlyphVector(GlyphVector g, float x, float y)
使用Graphics2D
上下文的渲染属性呈现指定的GlyphVector
的文本。abstract void
drawImage(BufferedImage img, BufferedImageOp op, int x, int y)
呈现一个BufferedImage
,用BufferedImageOp
过滤。abstract boolean
drawImage(Image img, AffineTransform xform, ImageObserver obs)
渲染图像,在绘制之前将图像空间的变换应用到用户空间中。abstract void
drawRenderableImage(RenderableImage img, AffineTransform xform)
渲染一个RenderableImage
,在绘制之前将图像空间的变换应用到用户空间。abstract void
drawRenderedImage(RenderedImage img, AffineTransform xform)
渲染一个RenderedImage
,在绘制之前将图像空间的变换应用到用户空间。abstract void
drawString(String str, float x, float y)
使用Graphics2D
上下文中的当前文本属性状态呈现由指定的String
指定的文本。abstract void
drawString(String str, int x, int y)
使用Graphics2D
上下文中的当前文本属性状态呈现指定的String
的文本。abstract void
drawString(AttributedCharacterIterator iterator, float x, float y)
根据TextAttribute
类的规范,渲染指定迭代器的文本,以应用其属性。abstract void
drawString(AttributedCharacterIterator iterator, int x, int y)
根据TextAttribute
类的规范,渲染指定迭代器的文本应用其属性。abstract void
fill(Shape s)
使用Graphics2D
上下文的设置填充Shape
的内部。void
fill3DRect(int x, int y, int width, int height, boolean raised)
绘制一个填充有当前颜色的3-D高亮矩形。abstract Color
getBackground()
返回用于清除区域的背景颜色。abstract Composite
getComposite()
返回当前Composite
在Graphics2D
环境。abstract GraphicsConfiguration
getDeviceConfiguration()
返回与此Graphics2D
关联的设备配置。abstract FontRenderContext
getFontRenderContext()
获取的渲染上下文Font
这个范围内Graphics2D
上下文。abstract Paint
getPaint()
返回当前Paint
的的Graphics2D
环境。abstract Object
getRenderingHint(RenderingHints.Key hintKey)
返回渲染算法的单个首选项的值。abstract RenderingHints
getRenderingHints()
获取渲染算法的首选项。abstract Stroke
getStroke()
返回Graphics2D
上下文中的当前Stroke
。abstract AffineTransform
getTransform()
返回Graphics2D
上下文中当前Transform
的Graphics2D
。abstract boolean
hit(Rectangle rect, Shape s, boolean onStroke)
检查指定的Shape是否与设备空间中指定的Shape
相交。abstract void
rotate(double theta)
使用旋转变换连接当前的Graphics2D
Transform
。abstract void
rotate(double theta, double x, double y)
将当前的Graphics2D
Transform
与转换的旋转变换连接起来。abstract void
scale(double sx, double sy)
使用缩放变换连接当前的Graphics2D
Transform
随后的渲染根据相对于之前的缩放比例的指定缩放因子调整大小。abstract void
setBackground(Color color)
设置Graphics2D
上下文的背景颜色。abstract void
setComposite(Composite comp)
设置Composite
为Graphics2D
的上下文。abstract void
setPaint(Paint paint)
为Graphics2D
上下文设置Paint
属性。abstract void
setRenderingHint(RenderingHints.Key hintKey, Object hintValue)
为渲染算法设置单个首选项的值。abstract void
setRenderingHints(Map<?,?> hints)
用指定的hints
替换渲染算法的所有首选项的值。abstract void
setStroke(Stroke s)
设置Stroke
为Graphics2D
的上下文。abstract void
setTransform(AffineTransform Tx)
覆盖Graphics2D
上下文中的变换。abstract void
shear(double shx, double shy)
使用剪切变换连接当前的Graphics2D
Transform
。abstract void
transform(AffineTransform Tx)
组成一个AffineTransform
与对象Transform
在此Graphics2D
根据规则最后指定第一涂覆。abstract void
translate(double tx, double ty)
将当前的Graphics2D Transform
与平移变换相结合。abstract void
translate(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)
连接当前的Graphics2D
Transform
与旋转变换。 随后的渲染相对于以前的原点旋转指定的弧度。 这相当于调用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)
将当前的Graphics2D
Transform
与平移的旋转变换连接起来。 随后的渲染由通过转换到指定位置,以指定弧度旋转并以与原始翻译相同的量翻译构造的变换来变换。 这相当于下列呼叫序列:translate(x, y); rotate(theta); translate(-x, -y);
以正角度θ旋转正X轴上的点朝着正y轴旋转。- 参数
-
theta
- 以弧度表示的旋转角度 -
x
- 旋转原点的x坐标 -
y
- 旋转原点的y坐标
-
scale
public abstract void scale(double sx, double sy)
使用缩放变换连接当前的Graphics2D
Transform
后续渲染根据相对于以前缩放的指定缩放因子进行调整大小。 这相当于调用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)
使用剪切变换连接当前的Graphics2D
Transform
。 随后的渲染由相对于前一位置的指定乘数剪切。 这相当于调用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的组合结果是一个新的Transform
Cx'。 Cx'成为Transform
的Graphics2D
。 通过更新的Transform
Cx'转换点p等价于首先通过Tx转换p,然后将结果转换为原始的Transform
Cx。 换句话说,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
在与当前Graphics2D
Transform
之前,用当前的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
-
-