java - 使用 SWT 进行快速像素绘图?

标签 java canvas swt plot pixel

我正在寻找一种快速简便的方法来在 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/

相关文章:

java - 在 `syncExec` block 内部和外部使用变量的最简单方法(或者,如何在不初始化的情况下存储对对象的最终引用)

java - Google Pub/Sub 主题创建

java - 如何正确使用StringBuffer#insert?

javascript - HTML DOM 和 jQuery DOM 在一行简单的代码中?

java - SWT 项目符号更改整个背景

java - 启动 Eclipse RCP 应用程序时小部件不显示

java - 在 run() 方法中使用 return 会发生什么?

java - 当缓冲区分配 14 个字节时执行 getLong 时出现 BufferUnderflowException 异常

css - 将对象放置在定义的形状上

python - 方程未显示在 Canvas 中