2016-08-05 54 views
0

我在Canvas节点涂一些像素,这样的:如何禁用画布像素平滑

canvas.getGraphicsContext2D().getPixelWriter().setColor(10, 10, Color.RED); 

然后我缩放画布。现在像素是blury/smooth(请参阅第一张图片)。但是我想在第二幅图中描绘出我想达到的效果。

我该怎么做?

Image 1 Image 2

回答

0

渲染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)处。