- java.lang.Object
-
- java.awt.Graphics
-
- java.awt.Graphics2D
-
public abstract class Graphics2Dextends 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
属性将颜色应用于目标绘图表面。
三种类型的渲染操作以及每种渲染过程的详细信息如下:-
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
,则将边界框视为已在用户空间中。 - 使用当前的
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
-
-
构造方法摘要
构造方法 变量 构造器 描述 protected
Graphics2D()
构造一个新的Graphics2D
对象。
-
方法摘要
所有方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 abstract void
addRenderingHints(Map<?,?> hints)
设置渲染算法的任意数量的首选项的值。abstract void
clip(Shape s)
将当前Clip
与指定的Shape
的内部Shape
,并将Clip
设置为生成的交点。abstract void
draw(Shape s)
使用当前Graphics2D
上下文的设置Shape
的轮廓。void
draw3DRect(int x, int y, int width, int height, boolean raised)
绘制指定矩形的三维突出显示轮廓。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)
绘制一个用当前颜色填充的三维高亮矩形。abstract Color
getBackground()
返回用于清除区域的背景颜色。abstract Composite
getComposite()
返回Graphics2D
上下文中的当前Composite
。abstract GraphicsConfiguration
getDeviceConfiguration()
返回与此Graphics2D
关联的设备配置。abstract FontRenderContext
getFontRenderContext()
在此Graphics2D
上下文中获取Font
的呈现上下文。abstract Paint
getPaint()
返回Graphics2D
上下文的当前Paint
。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
上下文中的Transform。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 )。-
声明方法的类 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)
使用旋转变换连接当前的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
- 坐标在正X轴方向上移位的乘数,作为其Y坐标的函数 -
shy
- 坐标在正Y轴方向上移位的乘数,作为其X坐标的函数
-
transform
public abstract void transform(AffineTransform Tx)
组成一个AffineTransform
与对象Transform
在此Graphics2D
根据规则最后指定第一涂覆。 如果当前Transform
是Cx,则使用Tx的合成结果是新的Transform
Cx'。 Cx'成为Transform
的当前Graphics2D
。 通过更新的Transform
Cx'转换点p相当于首先将p转换为Tx,然后将结果转换为原始的Transform
Cx。 换句话说,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
与当前转化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
-
-