要使用哪个图像

Ano*_*181 6 java bufferedimage image imageicon

我已经阅读了java api,但我仍然不明白它们之间的主要区别:

1)ImageIcon 2)BufferedImage 3)VolatileImage 4)图像

有人能告诉我每个人的使用时间吗?

Cod*_*ind 11

我不会将此解释称为使用Java Image类型的绝对标准,但这些是我遵循的经验法则:

1. ImageIcon

当您想要添加到按钮或用作窗口图标的小图像时,通常会使用此选项.这些可以直接从实现Image接口的任何东西创建.

2. BufferedImage

通常在需要操作图像中的单个像素时,或者想要双重缓冲自定义paint(Graphics g)方法时使用.图像驻留在RAM中,因此可能占用大量空间,对BufferedImage实例的修改通常不会加速硬件加速.

3. VolatileImage

硬件加速的图像,所以速度很快,但是在绘制之前你会冒着被硬件支持的缓冲区被覆盖的风险(虽然这很少发生,根据Oracle,这只是基于Windows的机器的一个问题).使用它比BufferedImage使用双缓冲自定义paint(Graphics g)方法要困难一些,但如果您在渲染到屏幕之前发现自己进行了大量的预处理,这是非常值得的.

4. Image 这基本上只是一个接口,它定义了每个Image应该具有的一些简单功能.当您不需要修改图像的内容和/或想要使处理只读图像数据的方法最灵活时,您应该使用它.