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

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

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

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

KEY_ANTIALIASING

抗锯齿提示键。对象的几何形状呈现方法是否将尝试沿形状的边缘减少锯齿现象。

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

此提示允许的值有

VALUE_ANTIALIAS_ON:使用抗锯齿模式完成呈现

VALUE_ANTIALIAS_OFF:在不使用抗锯齿模式的情况下完成呈现

VALUE_ANTIALIAS_DEFAULT:使用由实现选择的默认抗锯齿模式完成呈现

KEY_RENDERING

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

此提示允许的值有

VALUE_RENDER_SPEE:选择偏重输出速度的呈现算法

VALUE_RENDER_QUALITY:选择偏重输出质量的呈现算法。

VALUE_RENDER_DEFAULT:由实现选择对性能和质量进行良好权衡的呈现算法

KEY_DITHERING

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

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

此提示允许的值有

VALUE_DITHER_DISABLE:呈现几何形状时不抖动。

VALUE_DITHER_ENABLE:如果需要,在呈现几何形状时抖动。

VALUE_DITHER_DEFAULT:对该实现选择的抖动使用默认值。

KEY_TEXT_ANTIALIASING

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

此提示允许的值有

VALUE_TEXT_ANTIALIAS_ON:使用某种抗锯齿形式完成文本呈现。

VALUE_TEXT_ANTIALIAS_OFF:不使用任何抗锯齿形式完成文本呈现。

VALUE_TEXT_ANTIALIAS_DEFAULT:使用默认值完成文本呈现

VALUE_TEXT_ANTIALIAS_GASP:文本呈现需要使用字体资源中的信息,这些信息指定了每个点大小是否适合应用  VALUE_TEXT_ANTIALIAS_ON 或  VALUE_TEXT_ANTIALIAS_OFF。

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

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

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

从以下版本开始:1.6

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

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

VALUE_TEXT_ANTIALIAS_LCD_HRGB。

从以下版本开始:1.6

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

VALUE_TEXT_ANTIALIAS_LCD_HRGB。

从以下版本开始:1.6

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

VALUE_TEXT_ANTIALIAS_LCD_HRGB。

从以下版本开始:1.6

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_FRACTIONALMETRICS

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

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

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

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

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

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

此键允许的值有

VALUE_FRACTIONALMETRICS_OFF:用舍入为像素边界的 advance width 定位字符字形。

VALUE_FRACTIONALMETRICS_ON:用子像素精确度定位字符字形。

VALUE_FRACTIONALMETRICS_DEFAULT:用实现选择的精度定位字符字形。

KEY_INTERPOLATION

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

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

此提示允许的值有

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

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

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

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

VALUE_INTERPOLATION_BICUBIC:使用 X 和 Y 中的立方函数插入图像中整数坐标附近的 9 个样本,以生成一个颜色样本。从概念上讲,图像视图非常类似于

BILINEAR 算法中使用的视图,区别在于连接样本和曲线之间的颜色延伸,且当它们跨越样本边界时具有较好的斜面连续性。

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

KEY_ALPHA_INTERPOLATION

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

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

此提示允许的值有

VALUE_ALPHA_INTERPOLATION_SPEED:选择偏重于计算速度的 alpha 混合算法。

VALUE_ALPHA_INTERPOLATION_QUALITY:选择偏重于精确度和视觉质量的 alpha 混合算法。

VALUE_ALPHA_INTERPOLATION_DEFAULT:由实现选择对性能和质量进行良好权衡的 alpha 混合算法

KEY_COLOR_RENDERING

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

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

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

此提示允许的值有

VALUE_COLOR_RENDER_SPEED:最快地执行输出设备格式的颜色转换。

VALUE_COLOR_RENDER_QUALITY:用最高的精确度和视觉质量执行颜色转换计算。

VALUE_COLOR_RENDER_DEFAULT:根据实现的选择执行颜色转换计算,以表示可用的性能和精确度之间的最佳权衡。

KEY_STROKE_CONTROL

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

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

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

此提示允许的值有

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

VALUE_STROKE_PURE:几何形状应该保持不变并使用子像素精确度呈现

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

从以下版本开始:1.3

来自: http://man.lupaworld.com/content/develop/JDK_6.0_API_html_zh_CN/html/zh_CN/api/java/awt/RenderingHints.html#VALUE_STROKE_NORMALIZE

java中CAE画实心圆的参数_java绘图中RenderingHints 参数相关推荐

  1. android canvas空心圆,用canvas画实心圆和空心圆的方法

    用canvas画实心圆和空心圆的方法 发布时间:2020-09-14 10:19:25 来源:亿速云 阅读:260 作者:小新 这篇文章给大家分享的是有关用canvas画实心圆和空心圆的方法的内容.小 ...

  2. html、css如何画实心圆

    css3画实心圆 实现方法相当简单,css代码如下: .circle{ width:100px; height:100px; border-radius:50px; /* 图形的半径 */ } 转载于 ...

  3. opencv-python画实心圆、实心矩形

    画实心圆: https://www.freesion.com/article/2016702937/ 画实心矩形: https://blog.csdn.net/qq_37612828/article/ ...

  4. css 圆形背景icon_css3画实心圆和圆角的方法

    当你要用到一个圆形icon的时候,你可能想到通过图片软件来制作,事实上也确实如此,在css3之前,大家都是通过图片+css来实现各种各样的样式效果.不过在css3出来之后,这种方法就显得有点落伍了,它 ...

  5. java方法传对象参数_Java方法中的参数太多,第2部分:参数对象

    java方法传对象参数 在上一篇文章中 ,我研究了与方法和构造函数的长参数列表相关的一些问题. 在那篇文章中,我讨论了用自定义类型替换基元和内置类型以提高可读性和类型安全性. 这种方法使方法或构造函数 ...

  6. 快速画圆切线lisp_AUTOCAD中快速画2圆切线的LISP,无需设置选择切点

    CAD中经常会画2圆的切线,用直线命令后,大多是用按住CTRL+鼠标右键选择"切点",或在捕捉中设置切点,但比较麻烦,复杂图形会选择错误... 利用LISP语言(AUTOCAD自带 ...

  7. python画实心圆_OpenCV python 绘制随机实心圆

    OpenCV python 绘制随机实心圆 import numpy as np import cv2 def main(): # 1.创建白色背景图片 d = 400 img = np.ones(( ...

  8. python中turtle画小草_小草水[Python ]学习——参数的函数基础,穗,关于,篇

    [1]默认参数 要用默认参数,最好将默认参数放到最后 def myPrint(str,age = 18): print(str,age) myPrint("xcs",12) ''' ...

  9. java中==与equals的区别及理解_Java开发中常量池的理解与归纳

    相关概念 1.什么是常量 用final修饰的成员变量表示常量,值一旦给定就无法改变! final修饰的变量有三种:静态变量.实例变量和局部变量,分别表示三种类型的常量. 2.Class文件中的常量池 ...

  10. java hql 参数_java – SQLQuery中的Hibernate命名参数

    无法将Hibernate命名参数插入到SQL查询中: String values="'a', 'b', 'c', 'd'"; SQLQuery query = getSession ...

最新文章

  1. 移植ffmpeg到VC环境心得
  2. SAP Spartacus layoutSlots ID 和 CMSComponent 的映射关系
  3. 高仿QQ即时聊天软件开发系列之三登录窗口用户选择下拉框
  4. [jQuery] 根据表单的不同参数跳转不同的链接
  5. vue import组件的使用
  6. Java I/O体系之Writer和Reader详细讲解
  7. 目标检测之Faster RCNN理论概述
  8. 《大型网站技术架构:核心原理与案例分析》阅读笔记四
  9. feature tools:Python 中的自动化特征工程
  10. static 和 const的解释(转载)
  11. 用mysql语句备份_MySql常用备份及恢复语句
  12. Jacoco 实现 Android 端手工测试覆盖率统计
  13. 智能家居助手(一)-项目概述
  14. 不用vpn的谷歌翻译网址
  15. 校验和checksum、哈希值是什么?
  16. 你中了微软的圈套么?
  17. 【RISC-V】SiFive Unmatched开发板开发手记
  18. 人活到了30岁,月薪还停留在20岁怎么办?
  19. CFile记录日志——写各种数据类型的日志(CFile读写包括编码UTF-8)
  20. c语言设计一个学生成绩管理系统,用C语言设计的学生成绩管理系统1.doc

热门文章

  1. XDOJ 完全平方数
  2. ncnn发布20220420版本,让Vulkan神经网络推理得更快
  3. java 当前周_优化java获取当前系统时间属于第几周(时间段)
  4. UltraLAB台式图形工作站(独门绝技~多核+超高频~极速计算工作站H490介绍)
  5. UFS SCSI Inquiry Cmd
  6. Kubuntu中搜狗拼音输入法候选框乱码问题解决
  7. 固定翼飞机数学建模入门(姿态角篇)
  8. 修改Oracle GoldenGate(ogg)各个进程的读检查点和写检查点
  9. 双系统时间不一致解决方案
  10. VScode中出现提示Code 安装似乎损坏。请重新安装。