我在Canvas节点涂一些像素,这样的:如何禁用画布像素平滑
canvas.getGraphicsContext2D().getPixelWriter().setColor(10, 10, Color.RED);
然后我缩放画布。现在像素是blury/smooth(请参阅第一张图片)。但是我想在第二幅图中描绘出我想达到的效果。
我该怎么做?
我在Canvas节点涂一些像素,这样的:如何禁用画布像素平滑
canvas.getGraphicsContext2D().getPixelWriter().setColor(10, 10, Color.RED);
然后我缩放画布。现在像素是blury/smooth(请参阅第一张图片)。但是我想在第二幅图中描绘出我想达到的效果。
我该怎么做?
渲染JavaFX的图像甚至还有很多JavaFX中各个组件的一些方法锯齿,这意味着他们将尽量平滑,看到here另一篇文章与图片覆盖它。
你可以尝试先绘制的像素图像视图和禁用平滑属性,并重绘图像返回到上下文:
ImageView scaledImageView = new ImageView(image);
scaledImageView.setSmooth(false);
然而这将需要重新实现你已经有了, 和使用调整后的大小将图像拖回到context2d。
这篇文章here曾与模糊的抗锯齿仅供参考造成了同样的问题。
也有一些微创的解决方案,可以工作,有时如果你通过一个幅度小于2,实例32×32,64×缩放/变焦抗锯齿可扭曲的形象,它这样做是因为:
在该装置的像素级,整数坐标映射到像素和像素的中心之间的角部 和裂缝出现在 整数像素位置之间的中点。因为所有坐标 值与浮点数指定,坐标可以 精确地指向这些拐角(当浮点值具有 准确的整数值)或以上的像素的任何位置。例如, (0.5,0.5)坐标将指向舞台上的左上 像素的中心。类似地,在一个矩形(0,0),其尺寸由10 10 会从舞台对 第十扫描线的第10像素的右下角的左上 像素的左上角跨越。 矩形内最后一个像素的像素中心位于坐标(9.5,9.5)处。