【问题标题】:JavaFX, why are the pixel values in anchor panes double? Also what happens if you put in 10.5 for example?JavaFX,为什么锚窗格中的像素值加倍?例如,如果您输入 10.5 会发生什么?
【发布时间】:2019-04-12 10:33:17
【问题描述】:

最近我开始使用 javaFX 锚窗格,我看到距离值是双倍的。现在我的问题是他们为什么选择双精度而不是整数?我的意思是像素数,据我所知,您不能将内容移动半个像素。一个小例子:

AnchorPane.setTopAnchor(something, 10.5);

在此示例中,它将顶部锚点设置为 10.5 像素。再说一遍,为什么他们选择将其设置为双倍?当我放入 10.5 而不是 10.0 时,我究竟要改变什么?

【问题讨论】:

  • 一种可扩展的几何图形,实际上更真实。对角线穿过部分​​像素,与字母字形相同。然后旋转和缩放。字体大小首先带有非整数高度,并通过部分像素移位更好地呈现。然后是亚像素

标签: java javafx anchor pane


【解决方案1】:

JavaFX 中的布局坐标都是doubles。根据子元素的最终位置的属性,实际上可能会四舍五入为整数值(请参阅the snapToPixel property)。 (AnchorPane 似乎没有这样做,只是简单地使用非整数值作为子项的位置/宽度。)

此外,可能会有将节点与像素对齐的变换,例如按 2 倍缩放。

一般来说,不可能在所有情况下都将“节点像素”与显示像素完美对齐。 (只需考虑 45° 的旋转。)

如果Node 的一部分在应用所有变换后没有完全覆盖像素,则结果是正在绘制的节点的颜色,其不透明度取决于节点覆盖的像素部分,例如位于 10.5 的矩形的边缘导致节点的颜色被绘制在“像素 10”上,不透明度为一半。

【讨论】:

    【解决方案2】:

    我不知道真正的原因是什么,但正如文档中所说的那样

    AnchorPane 允许将子节点的边缘锚定到距锚窗格边缘的偏移处。如果锚窗格设置了边框和/或填充,则将从这些插图的内边缘测量偏移量。 docs

    所以它似乎计算节点子节点和锚窗格边缘之间的差异来确定节点子节点的放置位置,并且距离计算总是计算浮点/双精度格式!

    但在代码中,它们似乎是无缝的,它们都做同样的事情

    【讨论】:

      猜你喜欢
      • 2013-11-08
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 2018-01-15
      • 2015-07-15
      • 2014-01-19
      • 1970-01-01
      相关资源
      最近更新 更多