2010-08-04 46 views
1

我正在编写自定义热图生成器。我想知道什么是最快的方法是在Java中绘制盒子(最多约100万)。我发现的大多数问题都集中在动态图像上(比如在游戏中),而且我想知道是否有更好的方法去处理静态图像。我尝试过使用swing(通过GridLayout并为每个框添加一个彩色画布),使用Graphics2D直接在面板上绘图,还使用Processing库。虽然处理速度非常快,并生成一个干净的图像,窗口似乎有问题保持它;它会产生图像的不同部分,每当你最小化,移动窗口等。在Java中绘制静态图像的最快方法

我听说过OpenGL,但我从来没有碰过它,我想要一些反馈,看看是否(或其他)在投入时间之前将是一个更好的方法。

+0

很难回答。我敢打赌,第一个答案将包含:“基准”。但是,Graphics2D应该没问题。甚至可以使用Graphics2D的OpenGL管道。 – Tedil 2010-08-04 17:51:50

回答

2

对于静态图像,我将它们绘制成BufferedImage(BI),然后通过Graphics2D绘制。 我保留一个布尔值,告诉我BI是否是最新的。这样我只会花费一次昂贵的绘画费用。如果你想变得有趣,你可以扩展BI来处理小调整。对于重要的调整大小,您可能需要重新绘制BI以避免引入工件。对于覆盖数据(例如十字线,光标下的值等)也是有用的,因为您只是绘制BI和数据。

+0

我对调整大小和所有这些都不感兴趣,只是为了让我的时间减少,所以它的速度与R相当(它可以在25秒内完成大约650万个点)。这很不错 - 不像我想要的那么快,但肯定比我一直在做的更快。 :) – 2010-08-05 15:28:47