JavaTM Platform
Standard Ed. 6

java.awt
类 RenderingHints

java.lang.Object
  继承者 java.awt.RenderingHints
所有已实现的接口:
Cloneable, Map< Object, Object>

public class RenderingHints
     
extends Object
implements Map< Object, Object>, Cloneable

RenderingHints 类定义和管理键和关联值的集合,它允许应用程序将输入提供给其他类使用的算法选择,这些类执行呈现和图像处理服务。Graphics2D 类以及实现 BufferedImageOpRasterOp 的类都提供了一些方法,用于获取并可能设置单个 RenderingHints 键(或键组)及其关联值。当这些实现执行任何呈现或图像处理操作时,它们应当检查调用者所请求的任何 RenderingHints 的值,并相应地修改所使用的算法,以发挥它们的最佳功能。

注意,因为这些键和值是一些提示,所以不要求某一给定实现支持下面指示的所有可能选择,或者可以响应请求修改其算法选择。不同提示键的值也可以交互,从而在一种情况下可支持给定键的所有变体。当修改与其他键关联的值时,实现可能会受更多限制。例如,某些实现在抗锯齿提示关闭时可以提供几种抖动类型,但在抗锯齿开启时几乎不能控制抖动。受支持的键和提示的完整集合也因目标而有所不同,因为运行时在呈现到屏幕、呈现到 BufferedImage 对象或在打印时可能使用不同的底层模块。

实现可以随意地完全忽略提示,但应当尝试使用尽可能接近请求的实现算法。如果在将任意值用于关联提示键时某一实现支持给定的算法,那么它至少必须在此键的值正好是指定算法的值时才执行此操作。

用于控制提示的键都是为关联 RenderingHints.Key 类创建子类的特殊值。此类中许多常见提示在下文表示为静态常量,但列表并没有包含所有这类提示。通过定义子类化 Key 的新对象并定义关联值,其他包可以创建其他提示。


嵌套类摘要
static class RenderingHints.Key
          定义与 RenderingHints 一起使用的、用来控制呈现和图像管线中各种算法选择的所有键的基本类型。
 
从接口 java.util.Map 继承的嵌套类/接口
Map.Entry<K,V>
 
字段摘要
static RenderingHints.Key KEY_ALPHA_INTERPOLATION
          Alpha 插值提示键。
static RenderingHints.Key KEY_ANTIALIASING
          抗锯齿提示键。
static RenderingHints.Key KEY_COLOR_RENDERING
          颜色呈现提示键。
static RenderingHints.Key KEY_DITHERING
          抖动提示键。
static RenderingHints.Key KEY_FRACTIONALMETRICS
          字体小数规格提示键。
static RenderingHints.Key KEY_INTERPOLATION
          插值提示键。
static RenderingHints.Key KEY_RENDERING
          呈现提示键。
static RenderingHints.Key KEY_STROKE_CONTROL
          笔划规范化控制提示键。
static RenderingHints.Key KEY_TEXT_ANTIALIASING
          文本抗锯齿提示键。
static RenderingHints.Key KEY_TEXT_LCD_CONTRAST
          LCD 文本对比呈现提示键。
static Object VALUE_ALPHA_INTERPOLATION_DEFAULT
          Alpha 插值提示值——由实现选择对性能和质量进行良好权衡的 alpha 混合算法
static Object VALUE_ALPHA_INTERPOLATION_QUALITY
          Alpha 插值提示值——选择偏重于精确度和视觉质量的 alpha 混合算法。
static Object VALUE_ALPHA_INTERPOLATION_SPEED
          Alpha 插值提示值——选择偏重于计算速度的 alpha 混合算法。
static Object VALUE_ANTIALIAS_DEFAULT
          抗锯齿提示值——使用由实现选择的默认抗锯齿模式完成呈现。
static Object VALUE_ANTIALIAS_OFF
          抗锯齿提示值——在不使用抗锯齿模式的情况下完成呈现。
static Object VALUE_ANTIALIAS_ON
          抗锯齿提示值——使用抗锯齿模式完成呈现。
static Object VALUE_COLOR_RENDER_DEFAULT
          颜色呈现提示值——根据实现的选择执行颜色转换计算,以表示可用的性能和精确度之间的最佳权衡。
static Object VALUE_COLOR_RENDER_QUALITY
          颜色呈现提示值——用最高的精确度和视觉质量执行颜色转换计算。
static Object VALUE_COLOR_RENDER_SPEED
          颜色呈现提示值——最快地执行输出设备格式的颜色转换。
static Object VALUE_DITHER_DEFAULT
          抖动提示值——对该实现选择的抖动使用默认值。
static Object VALUE_DITHER_DISABLE
          抖动提示值——呈现几何形状时不抖动。
static Object VALUE_DITHER_ENABLE
          抖动提示值——如果需要,在呈现几何形状时抖动。
static Object VALUE_FRACTIONALMETRICS_DEFAULT
          字体小数规格提示值——用实现选择的精度定位字符字形。
static Object VALUE_FRACTIONALMETRICS_OFF
          字体小数规格提示值——用舍入为像素边界的 advance width 定位字符字形。
static Object VALUE_FRACTIONALMETRICS_ON
          字体小数规格提示值——用子像素精确度定位字符字形。
static Object VALUE_INTERPOLATION_BICUBIC
          插值提示值—— 使用 XY 中的立方函数插入图像中整数坐标附近的 9 个样本,以生成一个颜色样本。
static Object VALUE_INTERPOLATION_BILINEAR
          插值提示值——图像中最接近整数坐标样本的 4 种颜色样本被线性地插入,以生成一个颜色样本。
static Object VALUE_INTERPOLATION_NEAREST_NEIGHBOR
          插值提示值——使用图像中最接近整数坐标样本的颜色样本。
static Object VALUE_RENDER_DEFAULT
          呈现提示值——由实现选择对性能和质量进行良好权衡的呈现算法。
static Object VALUE_RENDER_QUALITY
          呈现提示值——选择偏重输出质量的呈现算法。
static Object VALUE_RENDER_SPEED
          呈现提示值——选择偏重输出速度的呈现算法。
static Object VALUE_STROKE_DEFAULT
          笔划规范化控制提示值——根据给定实现的权衡,可以修改几何形状或保留原来的几何形状。
static Object VALUE_STROKE_NORMALIZE
          笔划规范化控制提示值——几何形状应当规范化,以提高均匀性或直线间隔和整体美观。
static Object VALUE_STROKE_PURE
          笔划规范化控制提示值——几何形状应该保持不变并使用子像素精确度呈现。
static Object VALUE_TEXT_ANTIALIAS_DEFAULT
          文本抗锯齿提示值——根据 KEY_ANTIALIASING 提示或由实现选择的默认值完成文本呈现。
static Object VALUE_TEXT_ANTIALIAS_GASP
          文本抗锯齿提示值——文本呈现需要使用字体资源中的信息,这些信息指定了每个点大小是否适合应用 VALUE_TEXT_ANTIALIAS_ONVALUE_TEXT_ANTIALIAS_OFF
static Object VALUE_TEXT_ANTIALIAS_LCD_HBGR
          文本抗锯齿提示值——要求针对 LCD 显示器优化文本显示,子像素按从左到右为 B、G、R 的顺序显示,从而使水平子像素分辨率是全部水平像素分辨率 (HBGR) 的三倍。
static Object VALUE_TEXT_ANTIALIAS_LCD_HRGB
          文本抗锯齿提示值——要求针对 LCD 显示器优化文本显示,该 LCD 显示器子像素按从左到右为 R、G、B 的顺序显示,从而使水平子像素分辨率是全部水平像素分辨率 (HRGB) 的三倍。
static Object VALUE_TEXT_ANTIALIAS_LCD_VBGR
          文本抗锯齿提示值——要求针对 LCD 显示器优化文本显示,子像素组织按从顶部到底部为 R、G、B 的顺序显示,从而使垂直子像素分辨率是全部垂直像素分辨率 (VBGR) 的三倍。
static Object VALUE_TEXT_ANTIALIAS_LCD_VRGB
          文本抗锯齿提示值——要求针对 LCD 显示器优化文本显示,子像素组织按从顶部到底部为 R、G、B 的顺序显示,从而使垂直子像素分辨率是全部垂直像素分辨率 (VRGB) 的三倍。
static Object VALUE_TEXT_ANTIALIAS_OFF
          文本抗锯齿提示值——不使用任何抗锯齿形式完成文本呈现。
static Object VALUE_TEXT_ANTIALIAS_ON
          文本抗锯齿提示值——使用某种抗锯齿形式完成文本呈现。
 
构造方法摘要
RenderingHints(Map<RenderingHints.Key,?> init)
          构造一个新对象,该对象具有根据指定 Map 对象(可以为 null)初始化的键和值。
RenderingHints(RenderingHints.Key key, Object value)
          构造一个具有指定键/值对的新对象。
 
方法摘要
 void add(RenderingHints hints)
          将指定 RenderingHints 对象中的所有键和相应的值添加到此 RenderingHints 对象中。
 void clear()
          清除所有键/值对的 RenderingHints 对象。
 Object clone()
          创建此 RenderingHints 对象的一个副本,它与此 RenderingHints 对象具有相同的内容。
 boolean containsKey(Object key)
          如果此 RenderingHints 包含指定键的映射关系,则返回 true
 boolean containsValue(Object value)
          如果此 RenderingHints 将一个或多个键映射到指定值,则返回 true。
 Set<Map.Entry<Object,Object>> entrySet()
          返回此 RenderingHints 中所包含映射关系的 Set 视图。
 boolean equals(Object o)
          对指定的 Object 与此 RenderingHints 进行相等性比较。
 Object get(Object key)
          返回指定键所映射的值。
 int hashCode()
          返回此 RenderingHints 中的哈希码值。
 boolean isEmpty()
          如果此 RenderingHints 未包含键-值映射关系,则返回 true
 Set<Object> keySet()
          返回此 RenderingHints 中所包含键的 Set 视图。
 Object put(Object key, Object value)
          将指定 key 映射到此 RenderingHints 对象中指定的 value
 void putAll(Map<?,?> m)
          将指定 Map 中所有映射关系复制到此 RenderingHints 中。
 Object remove(Object key)
          从此 RenderingHints 对象中移除键和它所对应的值。
 int size()
          返回此 RenderingHints 中的键-值映射关系数。
 String toString()
          返回 hashmap 的一个相当长的字符串表示形式,该 hashmap 包含此 RenderingHints 对象的键或值的映射关系。
 Collection<Object> values()
          返回此 RenderinHints 中所包含键的 Collection 视图。
 
从类 java.lang.Object 继承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait
 

字段详细信息

KEY_ANTIALIASING

public static final RenderingHints.Key KEY_ANTIALIASING
抗锯齿提示键。 ANTIALIASING 提示控制 Graphics2D 对象的几何形状呈现方法是否将尝试沿形状的边缘减少锯齿现象。

典型抗锯齿算法的工作方式如下:根据估计的部分形状像素覆盖率,沿形状的边界将像素的现有颜色与所请求的填充绘制 (fill paint) 混合在一起。

此提示允许的值有


VALUE_ANTIALIAS_ON

public static final Object VALUE_ANTIALIAS_ON
抗锯齿提示值——使用抗锯齿模式完成呈现。

另请参见:
KEY_ANTIALIASING

VALUE_ANTIALIAS_OFF

public static final Object VALUE_ANTIALIAS_OFF
抗锯齿提示值——在不使用抗锯齿模式的情况下完成呈现。

另请参见:
KEY_ANTIALIASING

VALUE_ANTIALIAS_DEFAULT

public static final Object VALUE_ANTIALIAS_DEFAULT
抗锯齿提示值——使用由实现选择的默认抗锯齿模式完成呈现。

另请参见:
KEY_ANTIALIASING

KEY_RENDERING

public static final RenderingHints.Key KEY_RENDERING
呈现提示键。 RENDERING 提示是一个提供高级建议的常规提示,目的是在进行评估权衡时提示是应该选择更偏重于速度,还是选择更偏重于质量的算法。任何呈现或图像处理操作都可以参考此提示,但是决定通常会遵照其他优先于此提示的更明确的提示。

此提示允许的值有


VALUE_RENDER_SPEED

public static final Object VALUE_RENDER_SPEED
呈现提示值——选择偏重输出速度的呈现算法。

另请参见:
KEY_RENDERING

VALUE_RENDER_QUALITY

public static final Object VALUE_RENDER_QUALITY
呈现提示值——选择偏重输出质量的呈现算法。

另请参见:
KEY_RENDERING

VALUE_RENDER_DEFAULT

public static final Object VALUE_RENDER_DEFAULT
呈现提示值——由实现选择对性能和质量进行良好权衡的呈现算法。

另请参见:
KEY_RENDERING

KEY_DITHERING

public static final RenderingHints.Key KEY_DITHERING
抖动提示键。 DITHERING 提示控制着在将颜色存储到颜色分辨率受限制的目标中时,所选颜色的近似程度。

一些呈现目标支持的颜色选择数可能受到限制,它也许无法准确地表示在呈现操作过程中产生的颜色的完整色谱。对于这类目标,DITHERING 提示控制着是否使用最接近于所请求的受支持颜色的单个像素值的普通固定填充方式来完成呈现,或者是否使用组合的颜色模式来填充形状,以便更好地接近于该颜色。

此提示允许的值有


VALUE_DITHER_DISABLE

public static final Object VALUE_DITHER_DISABLE
抖动提示值——呈现几何形状时不抖动。

另请参见:
KEY_DITHERING

VALUE_DITHER_ENABLE

public static final Object VALUE_DITHER_ENABLE
抖动提示值——如果需要,在呈现几何形状时抖动。

另请参见:
KEY_DITHERING

VALUE_DITHER_DEFAULT

public static final Object VALUE_DITHER_DEFAULT
抖动提示值——对该实现选择的抖动使用默认值。

另请参见:
KEY_DITHERING

KEY_TEXT_ANTIALIASING

public static final RenderingHints.Key KEY_TEXT_ANTIALIASING
文本抗锯齿提示键。 TEXT_ANTIALIASING 提示可以控制文本抗锯齿算法的使用,这与形状呈现的选择无关。通常,应用程序只希望对文本而不是其他形状使用抗锯齿。此外,用于减少文本锯齿现象的算法通常比那些为常规呈现而开发的算法更复杂,所以,此提示键提供了其他一些值,这些值可以控制某些特定于文本的算法的选择。如果保持在 DEFAULT 状态下,此提示通常遵从常规 KEY_ANTIALIASING 提示键的值。

此提示允许的值有


VALUE_TEXT_ANTIALIAS_ON

public static final Object VALUE_TEXT_ANTIALIAS_ON
文本抗锯齿提示值——使用某种抗锯齿形式完成文本呈现。

另请参见:
KEY_TEXT_ANTIALIASING

VALUE_TEXT_ANTIALIAS_OFF

public static final Object VALUE_TEXT_ANTIALIAS_OFF
文本抗锯齿提示值——不使用任何抗锯齿形式完成文本呈现。

另请参见:
KEY_TEXT_ANTIALIASING

VALUE_TEXT_ANTIALIAS_DEFAULT

public static final Object VALUE_TEXT_ANTIALIAS_DEFAULT
文本抗锯齿提示值——根据 KEY_ANTIALIASING 提示或由实现选择的默认值完成文本呈现。

另请参见:
KEY_TEXT_ANTIALIASING

VALUE_TEXT_ANTIALIAS_GASP

public static final Object VALUE_TEXT_ANTIALIAS_GASP
文本抗锯齿提示值——文本呈现需要使用字体资源中的信息,这些信息指定了每个点大小是否适合应用 VALUE_TEXT_ANTIALIAS_ONVALUE_TEXT_ANTIALIAS_OFF

TrueType 字体通常在 'gasp' 表中提供此信息。在没有此信息的情况下,特定字体和大小的行为由实现默认值确定。

注:字体设计者通常慎重地针对大多数普通用户界面的点大小提示某一种字体。因此,'gasp' 表有可能指定只针对这些大小而不是所有大小使用提示。所以,在许多情况下,得到的文本显示等效于 VALUE_TEXT_ANTIALIAS_OFF。这可能无法预料,但它是正确的。

出于一致性目的,由多种物理字体组成的逻辑字体将使用最适合于总体复合字体的设置。

从以下版本开始:
1.6
另请参见:
KEY_TEXT_ANTIALIASING

VALUE_TEXT_ANTIALIAS_LCD_HRGB

public static final Object VALUE_TEXT_ANTIALIAS_LCD_HRGB
文本抗锯齿提示值——要求针对 LCD 显示器优化文本显示,该 LCD 显示器子像素按从左到右为 R、G、B 的顺序显示,从而使水平子像素分辨率是全部水平像素分辨率 (HRGB) 的三倍。这是最常用的配置。为具有其他 LCD 子像素配置的显示器选择此提示将可能导致没有焦点的文本。

注:
在选择是否应用任何 LCD 文本提示值时,实现可能考虑多种因素,这些因素包括要求目标的颜色深度至少要为每像素 15 位(即每个颜色分量为 5 位);字体特征(如内嵌位图是否可以产生更好的结果);在显示到非本地网络显示设备时,是否只在有合适的协议可用时才启用它;如果执行非常高的分辨率呈现或目标设备不合适时(如打印时),是否忽略提示。

这些提示在呈现到软件图像时同样可以应用,但这些图像可能不适合于常规导出,因为文本将针对特定子像素组织进行适当地呈现。此外,有损失的图像和图像格式(如颜色受到限制的 GIF)不是一个好选择。所以,除非图像注定要在具有相同配置的显示设备上呈现,否则,其他一些文本抗锯齿提示(如 VALUE_TEXT_ANTIALIAS_ON)也许是更好的选择。

在使用时选择与 LCD 显示器不匹配的值可能导致文本质量的下降。在不具备与 LCD 显示器相同特征的显示设备(即 CRT)上,整体效果可能类似于标准文本抗锯齿,但质量可能因颜色失真而降低。模拟连接的 LCD 显示器也没有表现出比标准文本抗锯齿更好的地方,类似于 CRT。

换句话说,为了得到最好的结果,需使用带有数字显示连接器的 LCD 显示器并指定合适的子像素配置。

从以下版本开始:
1.6
另请参见:
KEY_TEXT_ANTIALIASING

VALUE_TEXT_ANTIALIAS_LCD_HBGR

public static final Object VALUE_TEXT_ANTIALIAS_LCD_HBGR
文本抗锯齿提示值——要求针对 LCD 显示器优化文本显示,子像素按从左到右为 B、G、R 的顺序显示,从而使水平子像素分辨率是全部水平像素分辨率 (HBGR) 的三倍。与 HRGB 相比,这种配置不常见。为具有其他 LCD 子像素配置的显示器选择此提示将可能导致没有焦点的文本。有关何时应用此提示的更多信息,请参阅 VALUE_TEXT_ANTIALIAS_LCD_HRGB

从以下版本开始:
1.6
另请参见:
KEY_TEXT_ANTIALIASING

VALUE_TEXT_ANTIALIAS_LCD_VRGB

public static final Object VALUE_TEXT_ANTIALIAS_LCD_VRGB
文本抗锯齿提示值——要求针对 LCD 显示器优化文本显示,子像素组织按从顶部到底部为 R、G、B 的顺序显示,从而使垂直子像素分辨率是全部垂直像素分辨率 (VRGB) 的三倍。垂直方向比较少见,可能主要对物理旋转的显示器有用。为具有其他 LCD 子像素配置的显示器选择此提示将可能导致没有焦点的文本。有关何时应用此提示的更多信息,请参阅 VALUE_TEXT_ANTIALIAS_LCD_HRGB

从以下版本开始:
1.6
另请参见:
KEY_TEXT_ANTIALIASING

VALUE_TEXT_ANTIALIAS_LCD_VBGR

public static final Object VALUE_TEXT_ANTIALIAS_LCD_VBGR
文本抗锯齿提示值——要求针对 LCD 显示器优化文本显示,子像素组织按从顶部到底部为 R、G、B 的顺序显示,从而使垂直子像素分辨率是全部垂直像素分辨率 (VBGR) 的三倍。垂直方向比较少见,可能主要对物理地旋转显示有用。为具有其他 LCD 子像素配置的显示选择此提示将可能导致没有焦点的文本。有关何时应用此提示的更多信息,请参阅 VALUE_TEXT_ANTIALIAS_LCD_HRGB

从以下版本开始:
1.6
另请参见:
KEY_TEXT_ANTIALIASING

KEY_TEXT_LCD_CONTRAST

public static final RenderingHints.Key KEY_TEXT_LCD_CONTRAST
LCD 文本对比呈现提示键。此值是一个 Integer 对象,在与 LCD 文本抗锯齿提示(如 VALUE_TEXT_ANTIALIAS_LCD_HRGB)一起使用时,它被用于文本对比度调整。 默认值可以满足大多数目的,所以客户端几乎都不需要指定此提示值,除非它们有关于某一合适值的具体信息。较高的值并不意味着较高的对比度,实际上正好相反。校正以一种类似方式应用于显示系统的非线性感知亮度响应(perceptual luminance response)的 gamma 调整,但不指示对它进行完全校正。

从以下版本开始:
1.6
另请参见:
KEY_TEXT_ANTIALIASING

KEY_FRACTIONALMETRICS

public static final RenderingHints.Key KEY_FRACTIONALMETRICS
字体小数规格提示键。 FRACTIONALMETRICS 提示控制单个字符字形的定位是否考虑字体的缩放字符 advance 子像素的精确度,或者这类 advance 向量是否舍入为整个设备像素的一个整数数字。此提示只建议定位字形应该使用的精度,而不指定或建议是否应为了匹配而修改实际光栅化或字形的像素边界。

将文本呈现到低分辩率的设备(如屏幕)时没必要包括大量的舍入操作,因为字符字形的形状与规格的高质量和非常精确的定义必须与离散设备像素相匹配。理想情况下,文本布局过程中字形的定位将根据点的大小通过缩放字体的设计规格进行计算,但缩放的 advance with 不必是像素的一个整数数字。如果根据这些缩放的设计规格使用子像素精确度对字形进行定位,则在理想情况下,光栅化需要针对每个可能的子像素原点进行调整。

不幸的是,在文本布局过程中将每个自定义字形缩放到其实际子像素原点的代价太高,所以基于整数设备定位的简化系统通常用于布局文本。字形的光栅化和缩放的 advance with 在设备分辨率上都被调整,以生成看起来很好的文本,在字形之间具有一致的整数像素距离,有助于使字形看起来均匀,有一致性的距离且可读性好。

这种将光栅化字形的 advance with 舍入为整数距离的处理意味着:由于在每个字形调整宽度中一系列小差异的累加,使得字符密度和文本字符串的整体长度不同于理论上设计的测量值。特定差异将针对每种字形而有所不同,与它们的理论设计测量值相比,一些字形比较宽,而另一些字形较窄。因此,字符密度和长度中的整体差异将因许多因素的不同而有所不同,这些因素包括字体、作为目标的特定设备分辨率以及为表示要呈现的字符串而选择的字形。因此,对整个字符串而言,在多个设备分辨率中呈现同一个字符串可能出现很多不同的规格。

当启用 FRACTIONALMETRICS 时,实际字体设计规格按照点大小缩放,并用于具有子像素精确度的布局。因此,字符的字形平均密度和长字符串总长度将更接近于与字体的理论设计相匹配,但是可读性可能受影响,因为单独的字符对可能并不是始终显示为一致的间隔距离,这取决于字形原点子像素的累加与设备像素网格的协调方式。当正在执行必须一致地跨越多种不同输出分辨率的文本布局时,启用此提示可能很合适。需要特别说明的是,在文本布局正在低分辩率设备(如输出屏幕)上预览,但最终在高分辩率打印机或排版设备上呈现的情况下,此提示可能也很合适。

当禁用此提示时,缩放的设计规格针对布局舍入或调整为整数距离。任意特定字形对之间的距离在设备上将更加统一,但是长字符串的密度和总长度可能不再与字体设计人员的理论想法相匹配。在低分辩率设备(如计算机监视器)上禁用此提示通常产生更可读的结果。

此键允许的值有


VALUE_FRACTIONALMETRICS_OFF

public static final Object VALUE_FRACTIONALMETRICS_OFF
字体小数规格提示值——用舍入为像素边界的 advance width 定位字符字形。

另请参见:
KEY_FRACTIONALMETRICS

VALUE_FRACTIONALMETRICS_ON

public static final Object VALUE_FRACTIONALMETRICS_ON
字体小数规格提示值——用子像素精确度定位字符字形。

另请参见:
KEY_FRACTIONALMETRICS

VALUE_FRACTIONALMETRICS_DEFAULT

public static final Object VALUE_FRACTIONALMETRICS_DEFAULT
字体小数规格提示值——用实现选择的精度定位字符字形。

另请参见:
KEY_FRACTIONALMETRICS

KEY_INTERPOLATION

public static final RenderingHints.Key KEY_INTERPOLATION
插值提示键。 INTERPOLATION 提示控制在图像呈现操作过程中如何过滤图像像素或重新对其取样。

图像被隐式地定义为在整数坐标位置上提供颜色样本。当图像没有缩放到目标而垂直呈现时,其图像像素映射到其设备像素的选择是显而易见的,且图像中整数坐标位置的样本一个对一个地被转换到设备像素网格上的相应整数位置。当图像在缩放、旋转或其他转换坐标系中呈现时,图像后面设备像素坐标的映射关系可能引起问题:所提供的图像样本整数位置之间的连续坐标处使用什么颜色样本。插值算法定义了一些函数,它们根据整数坐标周围的颜色样本为图像中的任何连续坐标提供颜色样本。

此提示允许的值有


VALUE_INTERPOLATION_NEAREST_NEIGHBOR

public static final Object VALUE_INTERPOLATION_NEAREST_NEIGHBOR
插值提示值——使用图像中最接近整数坐标样本的颜色样本。从概念上讲,图像被视为单位大小的方形颜色区域的网格,该颜色以每个图像像素的中心为中心。

在放大图像时,图像看起来会相应地有些斑驳模糊。在缩小图像时,在输出表示中,源像素的颜色被不作修改地使用,或者完全被跳过。

另请参见:
KEY_INTERPOLATION

VALUE_INTERPOLATION_BILINEAR

public static final Object VALUE_INTERPOLATION_BILINEAR
插值提示值——图像中最接近整数坐标样本的 4 种颜色样本被线性地插入,以生成一个颜色样本。从概念上讲,图像被视为一组无穷小的点颜色样本,其值只位于整数坐标像素的中心,而且这些像素中心之间的空间是用线性延伸的颜色填充的,并用直线连接相邻的离散样本。

当放大图像时,因为有 NEAREST_NEIGHBOR,在图像中的颜色之间没有斑驳模糊边缘,但是混合可能沿样本排列的水平和垂直边缘显示一些微小的间断,这是由于插值斜面从样本的一侧到另一侧的突然更改造成的。当缩小图像时,更多图像像素具有它们自己的以结果输出表示的颜色样本,因为每个输出像素都从多达 4 个图像像素中接收颜色信息。

另请参见:
KEY_INTERPOLATION

VALUE_INTERPOLATION_BICUBIC

public static final Object VALUE_INTERPOLATION_BICUBIC
插值提示值—— 使用 XY 中的立方函数插入图像中整数坐标附近的 9 个样本,以生成一个颜色样本。从概念上讲,图像视图非常类似于 BILINEAR 算法中使用的视图,区别在于连接样本和曲线之间的颜色延伸,且当它们跨越样本边界时具有较好的斜面连续性。

放大图像时,没有斑驳模糊的边缘,与 BILINEAR 相比,插值显示得更光滑且原始图像中的所有边界都具有更好的描绘。当缩小图像时,甚至有更多的原始图像中的原始颜色样本将带有并表示它们的颜色信息。

另请参见:
KEY_INTERPOLATION

KEY_ALPHA_INTERPOLATION

public static final RenderingHints.Key KEY_ALPHA_INTERPOLATION
Alpha 插值提示键。 ALPHA_INTERPOLATION 提示是一个提供高级建议的常规提示,目的是在评估权衡时提示应选择更偏重于速度或更偏重于质量的 alpha 混合算法。

此提示可以控制 alpha 混合算法的选择,它提供了使用快速查找表或较低精度 SIMD 指令的一些精确度。在计算其他每像素成本时,此提示还控制是否在多个线性可视效果计算过程中将颜色和 alpha 值转换到线性颜色空间。

此提示允许的值有


VALUE_ALPHA_INTERPOLATION_SPEED

public static final Object VALUE_ALPHA_INTERPOLATION_SPEED
Alpha 插值提示值——选择偏重于计算速度的 alpha 混合算法。

另请参见:
KEY_ALPHA_INTERPOLATION

VALUE_ALPHA_INTERPOLATION_QUALITY

public static final Object VALUE_ALPHA_INTERPOLATION_QUALITY
Alpha 插值提示值——选择偏重于精确度和视觉质量的 alpha 混合算法。

另请参见:
KEY_ALPHA_INTERPOLATION

VALUE_ALPHA_INTERPOLATION_DEFAULT

public static final Object VALUE_ALPHA_INTERPOLATION_DEFAULT
Alpha 插值提示值——由实现选择对性能和质量进行良好权衡的 alpha 混合算法

另请参见:
KEY_ALPHA_INTERPOLATION

KEY_COLOR_RENDERING

public static final RenderingHints.Key KEY_COLOR_RENDERING
颜色呈现提示键。 COLOR_RENDERING 提示控制将颜色存储到目标图像或表面时近似值或转换的精确度。

当必须将呈现或图像处理操作生成的颜色值存储到目标中时,首先必须将该颜色转换为适合存储到目标图像或表面中的形式。必须至少将颜色分量转换为位表示形式并以正确的顺序排序,或者必须首先选择颜色查找表的索引,这样数据才可以存储到目标内存中。没有这种最少的转换,目标数据有可能表示为随机、不正确或甚至可能不受支持的值。快速将呈现操作的结果转换为最常见目标颜色格式的算法已众所周知,且执行得相当理想。

仅执行最基本的颜色格式转换,将颜色存储到目标,这样做可能潜在地忽略源和目标的 ColorSpace 校准或其他因素(如 gamma 校正的直线性)的差异。除非源和目标 ColorSpace 相同,从而在正确执行呈现操作的同时最大限度地维护被表示颜色的精确度,否则应该将源颜色转换为设备无关的 ColorSpace,然后转换回目标 ColorSpace。此外,如果要在呈现操作过程中执行计算(如多种源颜色的混合),通过选择与中间设备无关的 ColorSpace,使被计算的值与人眼的感知之间具有某种线性关系,以响应输出设备曲线,那么可以实现更加清晰的视觉。

此提示允许的值有


VALUE_COLOR_RENDER_SPEED

public static final Object VALUE_COLOR_RENDER_SPEED
颜色呈现提示值——最快地执行输出设备格式的颜色转换。

另请参见:
KEY_COLOR_RENDERING

VALUE_COLOR_RENDER_QUALITY

public static final Object VALUE_COLOR_RENDER_QUALITY
颜色呈现提示值——用最高的精确度和视觉质量执行颜色转换计算。

另请参见:
KEY_COLOR_RENDERING

VALUE_COLOR_RENDER_DEFAULT

public static final Object VALUE_COLOR_RENDER_DEFAULT
颜色呈现提示值——根据实现的选择执行颜色转换计算,以表示可用的性能和精确度之间的最佳权衡。

另请参见:
KEY_COLOR_RENDERING

KEY_STROKE_CONTROL

public static final RenderingHints.Key KEY_STROKE_CONTROL
笔划规范化控制提示键。 STROKE_CONTROL 提示键控制呈现实现是否应该或允许出于各种目的而修改所呈现轮廓的几何形状。

一些实现可以使用优化的平台呈现库,在给定平台上,它们比传统软件呈现算法更快,但它们也可能不支持浮点坐标。一些实现也可以具有复杂的算法,它们打乱路径的坐标,以便在宽度和间距上使宽线看起来更统一。

如果实现执行任意类型的修改或路径的“规范化”,则应当不在任何方向用半个以上像素来移动坐标。

此提示允许的值有

从以下版本开始:
1.3

VALUE_STROKE_DEFAULT

public static final Object VALUE_STROKE_DEFAULT
笔划规范化控制提示值——根据给定实现的权衡,可以修改几何形状或保留原来的几何形状。通常情况下,此设置允许实现使用基于平台呈现库的快速整数坐标,但不特别要求均匀性或审美上的规范化。

从以下版本开始:
1.3
另请参见:
KEY_STROKE_CONTROL

VALUE_STROKE_NORMALIZE

public static final Object VALUE_STROKE_NORMALIZE
笔划规范化控制提示值——几何形状应当规范化,以提高均匀性或直线间隔和整体美观。注意,对于给定的输入路径,不同的规范化算法可能比其他算法更成功。

从以下版本开始:
1.3
另请参见:
KEY_STROKE_CONTROL

VALUE_STROKE_PURE

public static final Object VALUE_STROKE_PURE
笔划规范化控制提示值——几何形状应该保持不变并使用子像素精确度呈现。

从以下版本开始:
1.3
另请参见:
KEY_STROKE_CONTROL
构造方法详细信息

RenderingHints

public RenderingHints(Map<RenderingHints.Key,?> init)
构造一个新对象,该对象具有根据指定 Map 对象(可以为 null)初始化的键和值。

参数:
init - 初始化提示的键/值对映射;如果对象为空,则该参数为 null

RenderingHints

public RenderingHints(RenderingHints.Key key,
                      Object value)
构造一个具有指定键/值对的新对象。

参数:
key - 特定提示属性的键
value - 用 key 指定的提示属性的值
方法详细信息

size

public int size()
返回此 RenderingHints 中的键-值映射关系数。

指定者:
接口 Map<Object,Object> 中的 size
返回:
RenderingHints 中的键-值映射关系数。

isEmpty

public boolean isEmpty()
如果此 RenderingHints 未包含键-值映射关系,则返回 true

指定者:
接口 Map<Object,Object> 中的 isEmpty
返回:
如果此 RenderingHints 未包含键-值映射关系,则返回 true

containsKey

public boolean containsKey(Object key)
如果此 RenderingHints 包含指定键的映射关系,则返回 true

指定者:
接口 Map<Object,Object> 中的 containsKey
参数:
key - 要测试其是否存在于此 RenderingHints 中的键。
返回:
如果此 RenderingHints 包含指定键的映射关系,则返回 true
抛出:
ClassCastException - 如果无法将键强制转换为 RenderingHints.Key

containsValue

public boolean containsValue(Object value)
如果此 RenderingHints 将一个或多个键映射到指定值,则返回 true。更正式地说,当且仅当此 RenderingHints 至少包含一个与满足以下条件的值 v 的映射关系时,才返回 true
(value==null ? v==null :value.equals(v))
. 对于大部分 RenderingHints 实现而言,此操作需要的时间可能会与 RenderingHints 的大小呈线性关系。

指定者:
接口 Map<Object,Object> 中的 containsValue
参数:
value - 要测试是否存在于此 RenderingHints 中的值。
返回:
如果此 RenderingHints 将一个或多个键映射到指定值,则返回 true

get

public Object get(Object key)
返回指定键所映射的值。

指定者:
接口 Map<Object,Object> 中的 get
参数:
key - 呈现提示键
返回:
该键在此对象中所映射的值;如果该键没有映射到此对象中的任何值,则返回 null
抛出:
ClassCastException - 如果无法将键强制转换为 RenderingHints.Key
另请参见:
put(Object, Object)

put

public Object put(Object key,
                  Object value)
将指定 key 映射到此 RenderingHints 对象中指定的 value。key 和 value 都不能为 null。通过使用与原来的键相同的键调用 get 方法,可以得到该值。

指定者:
接口 Map<Object,Object> 中的 put
参数:
key - 呈现提示键。
key - 呈现提示值。
value - 与指定键关联的值
返回:
此对象中指定键的以前的值;如果不存在该值,则返回 null
抛出:
NullPointerException - 如果该键为 null
ClassCastException - 如果无法将该键强制转换为 RenderingHints.Key
IllegalArgumentException - 对于指定值,如果指定键的 Key.isCompatibleValue() 方法返回 false
另请参见:
get(Object)

add

public void add(RenderingHints hints)
将指定 RenderingHints 对象中的所有键和相应的值添加到此 RenderingHints 对象中。位于此 RenderingHints 对象中,但不在指定的 RenderingHints 对象中的键不受影响。

参数:
hints - 要添加到此 RenderingHints 对象中的键/值对的集合

clear

public void clear()
清除所有键/值对的 RenderingHints 对象。

指定者:
接口 Map<Object,Object> 中的 clear

remove

public Object remove(Object key)
从此 RenderingHints 对象中移除键和它所对应的值。如果该键不在此 RenderingHints 对象中,则此方法不执行任何操作。

指定者:
接口 Map<Object,Object> 中的 remove
参数:
key - 要移除的呈现提示键
返回:
以前在此 RenderingHints 对象中映射的键的值;如果键没有映射关系,则返回 null
抛出:
ClassCastException - 如果无法将键强制转换为 RenderingHints.Key

putAll

public void putAll(Map<?,?> m)
将指定 Map 中所有映射关系复制到此 RenderingHints 中。这些映射关系将替换此 RenderingHints 中针对指定 Map 中的当前所有键的所有映射关系。

指定者:
接口 Map<Object,Object> 中的 putAll
参数:
m - 指定的 Map
抛出:
ClassCastException - 指定 Map 中的键或值的类不允许将其存储在此 RenderingHints 中。
IllegalArgumentException - 如果指定 Map 中的键或值的某个方面不允许将其存储在此 RenderingHints 中。

keySet

public Set<Object> keySet()
返回此 RenderingHints 中所包含键的 Set 视图。Set 受 RenderingHints 的支持,所以对 RenderingHints 的更改反映在 Set 中,反之亦然。如果在对 Set 进行迭代的同时修改了 RenderingHints,则迭代的结果是不确定的。该 Set 支持元素移除,它可以通过 Iterator.removeSet.removeremoveAllretainAllclear 操作从 RenderingHints 中移除相应的映射关系。它不支持 addaddAll 操作。

指定者:
接口 Map<Object,Object> 中的 keySet
返回:
RenderingHints 所包含键的 Set 视图。

values

public Collection<Object> values()
返回此 RenderinHints 中所包含键的 Collection 视图。 CollectionRenderingHints 的支持,所以 RenderingHints 的更改反映在 Collection 中,反之亦然。如果在对 Collection 进行迭代的同时修改了 RenderingHints,则迭代的结果是不确定的。此 Collection 支持元素移除,它可以通过 Iterator.removeCollection.removeremoveAllretainAllclear 操作从 RenderingHints 中移除相应的映射关系。它不支持 addaddAll 操作。

指定者:
接口 Map<Object,Object> 中的 values
返回:
RenderingHints 所包含值的 Collection 视图。

entrySet

public Set<Map.Entry<Object,Object>> entrySet()
返回此 RenderingHints 中所包含映射关系的 Set 视图。在返回的 Set 中,每个元素都是一个 Map.EntrySetRenderingHints 的支持,所以对 RenderingHints 的更改反映在 Set 中,反之亦然。如果在对 Set 进行迭代的同时修改了 RenderingHints,则迭代的结果是不确定的。

RenderingHints 对象中返回的 entrySet 是不可修改的。

指定者:
接口 Map<Object,Object> 中的 entrySet
返回:
RenderingHints 所包含映射关系的 Set 视图。

equals

public boolean equals(Object o)
对指定的 Object 与此 RenderingHints 进行相等性比较。如果指定对象也是一个 Map,并且这两个 Map 对象表示相同的映射关系,则返回 true。更正式地说,如果 t1.keySet().equals(t2.keySet()),并且对于 t1.keySet() 中的每个键 k,都满足以下条件,则 t1t2 这两个 Map 对象表示相同的映射关系:
(t1.get(k)==null ? t2.get(k)==null :t1.get(k).equals(t2.get(k)))
. 这确保了 equals 方法在 Map 接口的不同实现中能够正常工作。

指定者:
接口 Map<Object,Object> 中的 equals
覆盖:
Object 中的 equals
参数:
o - 要与此 RenderingHints 进行相等性比较的 Object
返回:
如果指定的 Object 等于此 RenderingHints,则返回 true
另请参见:
Object.hashCode(), Hashtable

hashCode

public int hashCode()
返回此 RenderingHints 中的哈希码值。 RenderingHints 的哈希码被定义为此 RenderingHints 对象的 entrySet 视图中每个 Entry 的 hashCode 之和。这确保 t1.equals(t2) 意味着对于任何两个 Map 对象 t1t2,都存在 t1.hashCode()==t2.hashCode(),这正是 Object.hashCode 的常规协定所要求的。

指定者:
接口 Map<Object,Object> 中的 hashCode
覆盖:
Object 中的 hashCode
返回:
RenderingHints 的哈希码值。
另请参见:
Map.Entry.hashCode(), Object.hashCode(), Object.equals(Object), equals(Object)

clone

public Object clone()
创建此 RenderingHints 对象的一个副本,它与此 RenderingHints 对象具有相同的内容。

覆盖:
Object 中的 clone
返回:
此实例的一个副本。
另请参见:
Cloneable

toString

public String toString()
返回 hashmap 的一个相当长的字符串表示形式,该 hashmap 包含此 RenderingHints 对象的键或值的映射关系。

覆盖:
Object 中的 toString
返回:
此对象的字符串表示形式。

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策