JavaFX图形“模糊”还是反锯齿? (没有使用效果)

我正在创造一些形状来学习,一切似乎都模糊了,就像一些抗锯齿,我没有使用任何效果(我还没有得到这些课程,哈哈)。

例如,我在1像素宽度的黑色背景中绘制一条白线,但它变灰了! 如果我将宽度更改为2px,它会变为白色,但仍然没有真正定义。

当我“googleing”时,我发现的一切都是关于形状的方法setSmooth(false) ,但它没有任何区别。 在舞台或场景中我应该改变或禁用的任何东西我都不知道?

任何帮助表示赞赏。 谢谢你的建议……

抱歉我的英语仍然需要改进lol …但这不是我的自然语言。

请参阅Shape文档:

大多数节点往往只应用整数转换,并且通常也使用整数坐标定义它们。 对于这种常见情况,具有直线边缘的形状的填充倾向于是清晰的,因为它们与落在整数器件坐标上的像素之间的裂缝对齐并因此倾向于自然地覆盖整个像素。

另一方面,抚摸那些相同的形状通常会导致模糊轮廓,因为默认描边属性指定默认笔划宽度为1.0坐标,通常映射到正好1个设备像素,并且笔划应跨越形状的边框,在边界两侧下降一半。 由于许多常见形状的边界倾向于直接落在整数坐标上,并且这些整数坐标通常精确地映射到整数设备位置,因此边框倾向于在形状边界的任一侧上的像素行和列上产生50%的覆盖率而不是100%覆盖其中一个。 因此,填充通常可以是清晰的,但是笔划通常是模糊的。

避免这些模糊轮廓的两种常见解决方案是使用覆盖更多像素的更宽的笔划 – 如果没有有效的比例变换,通常行程宽度为2.0将实现此目的 – 或者指定StrokeType.INSIDE或StrokeType.OUTSIDE笔划样式 – 将默认的单个单位笔划偏移到形状边框内部或外部的完整像素行或列之一。

另请参阅Node的文档:

在器件像素级,整数坐标映射到角上,像素之间的裂缝和像素的中心出现在整数像素位置之间的中点处。 由于所有坐标值均使用浮点数指定,因此坐标可以精确指向这些角(当浮点值具有精确的整数值时)或指向像素上的任何位置。 例如,坐标(0.5,0.5)将指向舞台上左上角像素的中心。 类似地,尺寸为10×10的(0,0)处的矩形将从舞台上左上角像素的左上角跨越到第10扫描线上第10像素的右下角。 该矩形内最后一个像素的像素中心位于坐标(9.5,9.5)。

因此,当您具有奇数笔划宽度时,清除线条的选项是:

  1. 使用StrokeType.INSIDE或StrokeType.OUTSIDE描边样式。
  2. 将形状的坐标偏移0.5像素,使得笔划在线上而不是线之间的裂缝排列。
  3. 只需使用下一个偶数作为笔画宽度,例如1 => 2,3 => 4等。

至于为什么setSmooth(false)不起作用,我setSmooth(false)知道,我的猜测是它引用的抗锯齿独立于当笔画以像素之间的裂缝为中心时执行的抗锯齿样式,但我不知道为什么那将是。