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
Graphics2D渲染属性控制的四个阶段。
渲染器可以通过将结果缓存为将来的调用,通过将多个虚拟步骤折叠为单个操作,或通过将各种属性识别为通过修改操作的其他部分可以消除的常见简单情况来优化许多这些步骤。
渲染过程中的步骤如下:
Clip
。 该Clip
由指定Shape
在用户空间中,并通过使用各种夹操作方法的程序控制Graphics
和Graphics2D
。 此用户剪辑由电流变换到设备空间Transform
和与所述设备夹 ,它是由窗和设备盘区的能见度定义组合。 用户剪辑和设备剪辑的组合定义了复合剪辑 ,该剪辑确定了最终裁剪区域。 渲染系统不会修改用户剪辑以反映所生成的组合剪辑。 Graphics2D
上下文中的当前Composite
属性将颜色应用于目标绘图面。 Shape
operations
draw(Shape)
操作,则createStrokedShape
上的当前方法Stroke
在属性Graphics2D
被用于上下文构造新Shape
对象包含指定的轮廓Shape
。 Shape
从用户空间变换到使用当前设备空间Transform
在Graphics2D
上下文。 Shape
的大纲是使用Shape的getPathIterator
方法Shape
,它返回一个沿着Shape
边界重复的PathIterator
对象。 Graphics2D
对象不能处理弯曲区段,所述PathIterator
对象返回然后它可以调用备用getPathIterator
的方法Shape
,其展平了Shape
。 Graphics2D
上下文中的当前Paint
查询PaintContext
,它指定在设备空间中呈现的颜色。 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
Transform
getDefaultTransform
为GraphicsConfiguration
的Component
。
Composite
AlphaComposite.SRC_OVER
规则。
Clip
Clip
,输出被剪切到Component
。
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
延伸Graphics
基于设置Stroke
个Transform
属性和呈现提示。 该定义在默认属性设置下执行相同。 例如,默认值Stroke
是一个BasicStroke
,宽度为1,没有冲击,默认的屏幕绘图变换是一个Identity变换。
以下两个规则提供可预测的渲染行为,无论是否使用混叠或抗锯齿。
BasicStroke
对象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
方法是按照Graphics
类中的drawLine
和fillRect
方法drawLine
, fillRect
方法将在Graphics2D
上下文中对当前Stroke
和Paint
对象的行为进行Graphics2D
。 该类覆盖那些使用当前Color
专有的版本的实现,覆盖当前的Paint
,并且使用fillRect
来描述与预先存在的方法完全相同的行为,而不管当前的Stroke
的设置。 Graphics
类仅定义了setColor
方法来控制要绘制的颜色。
由于Java 2D API扩展了Color
对象以实现新的Paint
接口,现有的setColor
方法现在是将当前Paint
属性设置为Color
对象的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 and Description |
---|---|
protected |
Graphics2D()
构造一个新的
Graphics2D 对象。
|
Modifier and Type | Method and Description |
---|---|
abstract void |
addRenderingHints(Map<?,?> hints)
为渲染算法设置任意数量的首选项的值。
|
abstract void |
clip(Shape s)
将当前的
Clip 与指定的
Clip 的内部
Shape ,并将
Clip 设置为相应的交点。
|
abstract void |
draw(Shape s)
招轮廓
Shape 使用当前的设置
Graphics2D 环境。
|
void |
draw3DRect(int x, int y, int width, int height, boolean raised)
绘制指定矩形的3-D高亮轮廓。
|
abstract void |
drawGlyphVector(GlyphVector g, float x, float y)
呈现指定的文本 GlyphVector 使用Graphics2D 上下文的呈现属性。
|
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(AttributedCharacterIterator iterator, float x, float y)
根据 TextAttribute 类的规范,渲染指定迭代器的文本应用其属性。
|
abstract void |
drawString(AttributedCharacterIterator iterator, int x, int y)
呈现了根据的说明书中施加其属性指定的迭代器的文本 TextAttribute 类。
|
abstract void |
drawString(String str, float x, float y)
使用
Graphics2D 上下文中的当前文本属性状态渲染由指定的String
String 的文本。
|
abstract void |
drawString(String str, int x, int y)
呈现指定的文本
String ,使用当前的文本属性的状态
Graphics2D 上下文。
|
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()
返回
Graphics2D 上下文中的当前
Composite 。
|
abstract GraphicsConfiguration |
getDeviceConfiguration()
返回与此
Graphics2D 的设备
Graphics2D 。
|
abstract FontRenderContext |
getFontRenderContext()
获取Graphics2D上下文中的
Font
Graphics2D 上下文。
|
abstract Paint |
getPaint()
返回
Graphics2D 上下文的当前
Paint 。
|
abstract Object |
getRenderingHint(RenderingHints.Key hintKey)
返回渲染算法的单个首选项的值。
|
abstract RenderingHints |
getRenderingHints()
获取渲染算法的首选项。
|
abstract Stroke |
getStroke()
返回
Graphics2D 上下文中的当前
Stroke 。
|
abstract AffineTransform |
getTransform()
返回
Graphics2D 上下文中当前
Transform 的副本。
|
abstract boolean |
hit(Rectangle rect, Shape s, boolean onStroke)
检查指定是否 Shape 相交指定Rectangle ,这是在设备的空间。
|
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
hints 渲染算法的所有首选项的值。
|
abstract void |
setStroke(Stroke s)
设置
Stroke 为
Graphics2D 环境。
|
abstract void |
setTransform(AffineTransform Tx)
覆盖
Graphics2D 上下文中的
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 上下文的原点转换为当前
Graphics2D 中的点(
x ,
y )。
|
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
protected Graphics2D()
Graphics2D
对象。
由于Graphics2D
是一个抽象类,并且由于必须由不同输出设备的Graphics2D
所以不能直接创建Graphics2D
对象。
相反, Graphics2D
对象必须从另一个获得Graphics2D
对象,创建由Component
,或从图像,如获得BufferedImage
个对象。
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)
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)
public abstract void draw(Shape s)
Shape
使用当前的设置Graphics2D
环境。
应用的渲染属性包括Clip
, Transform
, Paint
, Composite
和Stroke
属性。
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)
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
为空,此方法不起作用。
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)
public abstract void drawRenderedImage(RenderedImage img, AffineTransform xform)
RenderedImage
,在绘制之前将图像空间的变换应用到用户空间。
用户空间到设备空间的转换是用Transform
中的Graphics2D
。
在应用Graphics2D
上下文中的transform属性之前,将指定的变换应用于图像。
应用的呈现属性包括: Clip
, Transform
和Composite
属性。
请注意,如果指定的变换是不可转换的,则不执行渲染。
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)
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)
public abstract void drawString(String str, int x, int y)
String
,使用当前的文本属性的状态Graphics2D
上下文。
第一个字符的基线在用户空间中的位置( x , y )。
应用的渲染属性包括Clip
, Transform
, Paint
, Font
和Composite
属性。
对于诸如希伯来语和阿拉伯语的脚本系统中的字符,字形可以从右到左呈现,在这种情况下,提供的坐标是基线上最左边的字符的位置。
drawString
在
Graphics
str
- 要呈现的字符串
x
-在该位置的x坐标
String
应该呈现
y
-当位置的y坐标
String
应该呈现
NullPointerException
- 如果
str
是
null
Graphics.drawBytes(byte[], int, int, int, int)
,
Graphics.drawChars(char[], int, int, int, int)
public abstract void drawString(String str, float x, float y)
String
的文本,使用Graphics2D
上下文中的当前文本属性状态。
第一个字符的基线在用户空间中的位置( x , y )。
应用的渲染属性包括Clip
, Transform
, Paint
, Font
和Composite
属性。
对于诸如希伯来语和阿拉伯语的脚本系统中的字符,字形可以从右到左呈现,在这种情况下,提供的坐标是基线上最左边的字符的位置。
str
- 要渲染的
String
x
-在该位置的x坐标
String
应该呈现
y
-当位置的y坐标
String
应该呈现
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)
public abstract void drawString(AttributedCharacterIterator iterator, int x, int y)
TextAttribute
类的规范,渲染指定迭代器的文本应用其属性。
第一个字符的基线位于用户空间中的位置( x , y )。 对于诸如希伯来语和阿拉伯语的脚本系统中的字符,字形可以从右到左呈现,在这种情况下,提供的坐标是基线上最左边的字符的位置。
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)
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)
public abstract void drawGlyphVector(GlyphVector g, float x, float y)
GlyphVector
使用Graphics2D
上下文的呈现属性。
应用的呈现属性包括: 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)
public abstract void fill(Shape s)
Graphics2D
上下文的设置填充Shape
的内部。
应用的呈现属性包括: Clip
, Transform
, Paint
和Composite
。
public abstract boolean hit(Rectangle rect, Shape s, boolean onStroke)
Shape
相交指定Rectangle
,这是在设备的空间。
如果onStroke
是假的,指定的内部此方法检查是否Shape
相交指定Rectangle
。
如果onStroke
是true
,该方法检查是否Stroke
指定的Shape
轮廓相交指定Rectangle
。
考虑到的呈现属性包括: Clip
, Transform
和Stroke
属性。
rect
- 设备空间中检查命中的区域
s
-
Shape
检查一击
onStroke
- 用于选择测试时的标记或填充形状的标志。
如果标志是true
, Stroke
对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)
public abstract GraphicsConfiguration getDeviceConfiguration()
Graphics2D
的设备配置
Graphics2D
。
Graphics2D
。
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
public abstract void setPaint(Paint paint)
Paint
的属性Graphics2D
环境。
调用此方法与null
Paint
对象不会对目前的任何影响Paint
这个属性Graphics2D
。
paint
- 在
Paint
过程中要用于生成颜色的
Paint
对象,或
null
Graphics.setColor(java.awt.Color)
, getPaint()
, GradientPaint
, TexturePaint
public abstract void setStroke(Stroke s)
Stroke
为
Graphics2D
环境。
s
-
Shape
在渲染过程中用于笔画
Stroke
对象
BasicStroke
, getStroke()
public abstract void setRenderingHint(RenderingHints.Key hintKey, Object hintValue)
RenderingHints
类。
hintKey
- 提示设置的关键。
hintValue
- 指示指定提示类别的首选项的值。
getRenderingHint(RenderingHints.Key)
, RenderingHints
public abstract Object getRenderingHint(RenderingHints.Key hintKey)
RenderingHints
类。
hintKey
- 对应于提示的关键。
RenderingHints
类中定义。
RenderingHints
, setRenderingHint(RenderingHints.Key, Object)
public abstract void setRenderingHints(Map<?,?> hints)
hints
渲染算法的所有首选项的值。
所有渲染提示的现有值将被丢弃,并且从指定的Map
对象初始化新的一组已知提示和值。
提示类别包括渲染过程中渲染质量和总体时间/质量权衡的控件。
有关某些常用键和值的定义,请参阅RenderingHints
类。
hints
- 渲染提示要设置
getRenderingHints()
, RenderingHints
public abstract void addRenderingHints(Map<?,?> hints)
Map
对象中存在的渲染提示的值Map
被修改。
不存在于指定对象中的所有其他首选项未修改。
提示类别包括渲染过程中渲染质量和总体时间/质量权衡的控件。
有关某些常用键和值的定义,请参阅RenderingHints
类。
hints
- 渲染提示要设置
RenderingHints
public abstract RenderingHints getRenderingHints()
RenderingHints
类。
RenderingHints
包含当前偏好。
RenderingHints
, setRenderingHints(Map)
public abstract void translate(int x, int y)
Graphics2D
上下文的原点转换为当前Graphics2D
中的点( x , y )。
修改Graphics2D
上下文,使其新起点对应于Graphics2D
上下文的前坐标系中的点( x , y )。
在这种图形上下文中的后续渲染操作中使用的所有坐标都是相对于这个新的起点。
public abstract void translate(double tx, double ty)
Graphics2D
Transform
与平移变换相连。
随后的渲染相对于前一位置转换指定的距离。
这等同于调用变换(T),其中T是一个AffineTransform
由以下矩阵表示:
[ 1 0 tx ]
[ 0 1 ty ]
[ 0 0 1 ]
tx
- 沿x轴平移的距离
ty
- 沿y轴平移的距离
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
- 以弧度表示的旋转角度
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坐标
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坐标相对于以前的渲染操作相乘的量。
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坐标的函数
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
- 与当前
Transform
组合的
AffineTransform
对象
setTransform(java.awt.geom.AffineTransform)
, AffineTransform
public abstract void setTransform(AffineTransform Tx)
Graphics2D
上下文中的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
public abstract AffineTransform getTransform()
Graphics2D
上下文中当前
Transform
的副本。
AffineTransform
在
Graphics2D
上下文中。
transform(java.awt.geom.AffineTransform)
,
setTransform(java.awt.geom.AffineTransform)
public abstract Paint getPaint()
Graphics2D
上下文的当前
Paint
。
Graphics2D
Paint
,它定义了颜色或图案。
setPaint(java.awt.Paint)
,
Graphics.setColor(java.awt.Color)
public abstract Composite getComposite()
Graphics2D
上下文中的当前
Composite
。
Graphics2D
Composite
,它定义了合成样式。
setComposite(java.awt.Composite)
public abstract void setBackground(Color color)
Graphics2D
上下文的背景颜色。
背景颜色用于清除区域。
当一个Graphics2D
构造一个Component
时,背景颜色是从Component
。
设置在背景色Graphics2D
方面仅影响后续clearRect
调用,而不是背景色Component
。
要改变的背景Component
,使用适当的方法Component
。
color
- 用于后续调用
clearRect
的背景颜色
getBackground()
,
Graphics.clearRect(int, int, int, int)
public abstract Color getBackground()
Graphics2D
Color
,它定义了背景颜色。
setBackground(java.awt.Color)
public abstract Stroke getStroke()
Graphics2D
上下文中的当前
Stroke
。
Graphics2D
Stroke
,它定义了线条样式。
setStroke(java.awt.Stroke)
public abstract void clip(Shape s)
Clip
与内部指定的Shape Shape
,并将Clip
设置为相应的交点。
Shape
的Shape与当前Graphics2D
Transform
进行转换,然后与当前的Clip
。
该方法用于使当前的Clip
更小。
要使Clip
较大,请使用setClip
。
通过此方法修改的用户剪辑与与设备边界和可见性相关联的剪辑无关。
如果以前没有设置任何剪辑,或者使用null
参数使用setClip
剪辑剪辑,则指定的Shape
将成为新的用户剪辑。
s
-在Shape
与当前相交Clip
。
如果s
为null
,则此方法将清除当前的Clip
。
public abstract FontRenderContext getFontRenderContext()
Font
Graphics2D
上下文。
FontRenderContext
封装了抗锯齿和分数指标等应用提示,以及目标设备特定信息,例如每英寸点数。
当使用执行排版格式的对象(如Font
和TextLayout
时,该信息Font
TextLayout
。
这些信息也应该由执行自己的布局的应用程序提供,并且当各种渲染提示已经应用于文本呈现时,需要对字形的各种特征进行准确的测量,例如提前和行高。
FontRenderContext
, Font.createGlyphVector(java.awt.font.FontRenderContext, java.lang.String)
, TextLayout
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.