【发布时间】:2015-06-09 19:15:27
【问题描述】:
我在 JavaFX 库中使用画布。我需要尽可能快地绘制许多像素。我执行这个:
canvas.getGraphicsContext2D().setFill(color);
canvas.getGraphicsContext2D().fillRect(x, y, 1, 1);
我想它很慢。我可以使用更快的方式吗?也许我应该使用另一种方式/方法来填充一个像素?
【问题讨论】:
-
您是仅在画布上绘制像素还是同时使用其他画布 API?
-
我使用默认画布:
javafx.scene.canvas.Canvas -
我知道你使用画布,但我正在努力解决你是否应该这样做。如果您所做的只是操纵像素,则不需要画布,WritableImage 就足够了,并且可能会表现得更好。如果你在画布上做其他事情,比如在画布上画线,那么你需要一个画布。
-
我实现了诸如 z-buffer、phong shading 等算法,可以将我的 3D 对象转换为 2D 图像。
-
在canvas performance 上查看此主题。将 PixelWriter 用于具有普通 ImageView 的图像可能最适合您的情况。如果我有时间,我会发布一个答案,但与此同时,任何人都可以根据 cmets 和链接线程组合一个答案。对于您正在寻找的画布graphicsContext.getPixelWriter()