我在JavaFX库中使用canvas。我需要尽可能快地绘制许多像素。我执行这个:
canvas.getGraphicsContext2D().setFill(color);
canvas.getGraphicsContext2D().fillRect(x, y, 1, 1);
我想这很慢。我可以用更快的方式吗?也许我应该使用另一种方式/方法来填充一个像素?
答案 0 :(得分:10)
您可以使用Image中的PixelWriter。 正如@jewelsea所说,使用canvas.getGraphicsContext2D().getPixelWriter()
使用PixelWriter,您可以绘制所需的任何像素:
pixelWriter.setColor(int x, int y,Color c)
我认为这是仅使用Paint像素的最佳方式。
您也可以放弃Canvas并使用带有WriteAbleImage的ImageView。
在这种情况下,您可以使用 writableImage.getPixelWriter() 与Canvas一样。
如果这仍然很慢,你可以在后台线程中执行pixelWriter.setColor(..),这样应用程序就不会停止。
另见:
我希望这个答案可以帮助你。