java.awt

接口
异常
错误
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)一起使用时,它被用于文本对比度调整。
  • 这些值应该是 100 到 250 之间的正整数。
  • 当在浅色背景上显示深色文本时,较低的值(如 100)对应于较高对比度的文本。
  • 当在浅色背景上显示深色文本时,较高的值(如 200)对应于较低对比度的文本。
  • 通常,有用值的范围缩小到 140-180。
  • 如果未指定任何值,则应用系统或实现的默认值。
默认值可以满足大多数目的,所以客户端几乎都不需要指定此提示值,除非它们有关于某一合适值的具体信息。较高的值并不意味着较高的对比度,实际上正好相反。校正以一种类似方式应用于显示系统的非线性感知亮度响应(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 舍入为整数距离的处理意味着:由于在每个字形调整宽度中一系列小差异的累加,使得字符密度和文本字符串的整体长度不同于理论上设计的测量值。特定差异将针对每种字形而有所不同,与它们的理论设计测量值相比,一些字形比较宽,而另一些字形较窄。因此,字符密度和长度中的整体差异将因许多因素的不同而有所不同,这些因素包括字体、作为目标的特定设备分辨率以及为表示要呈现的字符串而选择的字形。因此,对整个字符串而言,在多个设备分辨率中呈现同一个字符串可能出现很多不同的规格。

当启用 FRACTIONA