【发布时间】:2010-02-16 14:54:43
【问题描述】:
我在Canvas 上绘制了一堆图块,这些图块由Images 或BufferedImages 表示。
我注意到我使用Images 获得了毫秒级的绘制,但我开始使用BufferedImages 来绘制帧时间天空火箭到 20 毫秒以上的图块。
BufferedImage buffered = ImageIO.read(new File(fileName));
Image image = Toolkit.getDefaultToolkit().createImage(fileName);
这两个图像都支持 Alpha 通道。我想开始使用支持 alpha 的 Image 的中间缓冲区。但是,除了此 Toolkit 调用以从文件创建一个之外,我还没有在 jdk 中找到可以生成它们的位置。
基本上有人知道如何从头开始创建一个可以支持 alpha 的空白图像(不是 BufferedImage)吗?
【问题讨论】:
-
BufferedImage 是一个图像。 Image 是一个抽象类,标准 Java 库中仅有的两个子类是 BufferedImage 和 VolatileImage(您可能不想使用它们)。真正的问题是,为什么从 Toolkit 加载的图像绘制速度更快?你在写小程序吗?如果不是,请考虑使用 JComponent 而不是 Canvas 对象。 AWT 库通常比 Swing 库慢。
-
您是如何创建缓冲图像的?它们是哪一种?
-
@Pace:
java.awt.Image的其他子类,即sun.awt.image.ToolkitImage,当您使用 Toolkit 方法创建图像时,这些图像恰好比 BufferedImage 对象绘制得快得多原因。 -
@basszero,我正在使用上面的两行代码。第一行从一个文件创建一个 BufferedImage,第二行从同一个文件创建一个非 BufferedImage。 @Pace,实际上我在测试中发现 AWT 库对我来说更快。