JavaFX,为什么锚定窗格中的像素值是双倍的?如果你把10.5放进去,会发生什么?
最近我开始使用javaFX锚定窗格,我看到距离值是一个双精度值。现在我的问题是为什么他们选择了双精度而不是整数?我的意思是像素数,据我所知,你不能将内容移动半个像素。举个小例子:JavaFX,为什么锚定窗格中的像素值是双倍的?如果你把10.5放进去,会发生什么?,java,javafx,anchor,pane,Java,Javafx,Anchor,Pane,最近我开始使用javaFX锚定窗格,我看到距离值是一个双精度值。现在我的问题是为什么他们选择了双精度而不是整数?我的意思是像素数,据我所知,你不能将内容移动半个像素。举个小例子: AnchorPane.setTopAnchor(something, 10.5); 在本例中,它将顶部定位设置为10.5像素。那么,他们为什么要把它改成双倍的呢?当我把10.5改成10.0时,我到底要做些什么呢?我不知道真正的原因是什么,但正如文档中所说的那样 AnchorPane允许将子节点的边定位到与定位窗格边的
AnchorPane.setTopAnchor(something, 10.5);
在本例中,它将顶部定位设置为10.5像素。那么,他们为什么要把它改成双倍的呢?当我把10.5改成10.0时,我到底要做些什么呢?我不知道真正的原因是什么,但正如文档中所说的那样 AnchorPane允许将子节点的边定位到与定位窗格边的偏移处。如果定位窗格设置了边框和/或填充,则将从这些插图的内边缘测量偏移量 因此,它似乎会计算节点子节点和锚定窗格边缘之间的差异,以确定放置节点子节点的位置,距离计算始终采用浮点/双精度格式
但在代码中,它们似乎都做了相同的事情,JavaFX中的布局坐标都是双倍的。根据子对象的属性,子对象的最终位置实际上可能被舍入为整数值,请参见。AnchorPane似乎不这样做,但只是对子对象的位置/宽度使用非整数值 此外,可能存在将节点与像素对齐的变换,例如按因子2缩放 通常,不可能在所有情况下始终将节点像素与显示像素完全对齐。只考虑旋转45°。< /P>
如果在应用了所有变换后,节点的一部分没有完全覆盖像素,则结果是绘制的节点颜色不透明度取决于节点覆盖的像素部分,例如,位于10.5的矩形边缘会导致节点的颜色以半不透明的方式绘制在像素10上。一个可缩放的几何体,实际上更真实。对角线穿过部分像素,与字母图示符相同。然后旋转和缩放。字体大小首先是非整数高度,通过部分像素偏移可以获得更好的渲染效果。然后是亚像素