将图像绘制为按钮的背景或使用Java2D绘制它是更好/更快

时间:2010-09-02 21:32:39

标签: java swing button drawing java-2d

假设我有一个按钮,想要将背景按钮更改为渐变,使用Java2D绘制渐变是更好/更快,还是仅使用该渐变获取图像并将其放在按钮的背景中?

3 个答案:

答案 0 :(得分:1)

判断事物是否更快的唯一方法是衡量它。更改按钮的背景颜色因外观而异。感觉,我喜欢实现Icon界面以装饰按钮,如example中所述。

答案 1 :(得分:1)

最佳答案:测量并查看。

现实的答案:真的不重要。屏幕刷新率通常是更重要的因素。

最佳解决方案:使用某种形式的双缓冲来使问题无关紧要。

答案 2 :(得分:0)

我同意衡量和观察是很重要的。根据我的经验,绘制渐变可能比绘制图像慢。但是,如果你只是在谈论一个小按钮,它可能没有足够的差别担心。有一些技巧可以加速渐变。例如,您可以将其绘制到BufferedImage,无论何时需要绘制渐变,都使用 g.drawImage(Image img,int x,int y,ImageObserver observer)而不是创建新渐变。更重要的是,如果渐变是直线上下,则可以将渐变存储在1像素宽度的BufferedImage中。然后,您可以使用 g.drawImage(Image img,int x,int y,int width,int height,ImageObserver observer)在整个背景宽度上绘制渐变。

然而,担心哪个更快是没有意义的,但如果一个需要1毫秒而另一个需要0.1毫秒(除非你试图每秒调用1000次)。有关详细信息,我建议使用“Filthy Rich Clients”一书,尤其是第4章,第5章和第7章。