我已经阅读了 java api,但我仍然不明白两者之间的主要区别:
1) ImageIcon 2) BufferedImage 3) VolatileImage 4) 图像
有人能告诉我每个人什么时候使用吗?
我已经阅读了 java api,但我仍然不明白两者之间的主要区别:
1) ImageIcon 2) BufferedImage 3) VolatileImage 4) 图像
有人能告诉我每个人什么时候使用吗?
我不会将此解释称为使用 Java Image 类型的绝对标准,但这些是我遵循的经验法则:
1. 图像图标
这通常在您想要添加到按钮或用作窗口图标的小图像时使用。这些可以直接从任何实现Image
接口的东西中创建。
2.缓冲图像
通常在您需要操作图像中的单个像素时使用,或者当您想要双缓冲自定义paint(Graphics g)
方法时使用。映像驻留在 RAM 中,因此它会占用大量空间,并且对BufferedImage
实例的修改通常不是硬件加速的。
3. VolatileImage
硬件加速的图像,所以它很快,但是在你完成绘画之前你会冒着硬件支持的缓冲区被覆盖的风险(尽管这种情况很少发生,根据 Oracle 的说法,这只是基于 Windows 的机器的问题)。BufferedImage
它比双缓冲自定义方法更难使用paint(Graphics g)
,但如果您发现自己在渲染到屏幕之前做了很多预处理,那么它是非常值得的。
4. Image
这基本上只是一个接口,它定义了每个人都Image
应该拥有的一些基本功能。当您不需要修改图像的内容和/或想要使处理只读图像数据的方法最灵活时,您应该使用它。
此外,ImageIcon 实现了可序列化,因此您可以通过 java 套接字发送它。如果您有 Image 对象,则必须将它们转换为 ImageIcon 并发送。当客户端获取 ImageIcons 时,它可以再次将它们转换为图像。