我正在寻找一种快速简便的方法来在 SWT Canvas 中绘制任意颜色的像素。 到目前为止,我正在使用类似的东西:
// initialization:
GC gc = new GC(canvas);
// inside the drawing loop:
Color cc = new Color(display, r, g, b);
gc.setForeground(cc);
gc.drawPoint(x, y);
cc.dispose();
这太慢了。用像素填充 300x300 的 Canvas 大约需要 1.5 秒。 我可以在屏幕外创建一个图像,在其中设置像素,然后绘制图像。这会更快,但我特别想要在 Canvas 上逐像素绘制图像的渐变绘画效果。
最佳答案
我敢打赌,影响性能的是分配和释放 90,000 个 Color
对象。请记住,在 SWT 中,每个 Color
对象都分配本地资源,这就是为什么您必须 dispose()
它。这意味着每次分配和处理 Color
对象时,您都必须从 JVM 转换到 native 代码并返回。
您能否在 300x300 像素循环中缓存您的 Color
实例,然后在循环后处理这些对象?您需要一个有点智能的缓存,它最多只能容纳这么多对象,然后会处理其中的一些条目,但这应该会大大加快处理速度。
关于java - 使用 SWT 进行快速像素绘图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/698620/