2016-08-05 53 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)處。