gpt4 book ai didi

java - paintComponent 方法绘制大量图片比较耗时

转载 作者:行者123 更新时间:2023-11-29 04:45:10 25 4
gpt4 key购买 nike

for (int i = 0; i < bricksList.size(); i++) {
BufferedImage image;
try {

image = ImageIO.read(new File(bricksList.get(i).img));

g.drawImage(image, bricksList.get(i).x, bricksList.get(i).y, null);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

我正在尝试使用 paintComponent() 方法绘制 80 张图像。我还有另一个对象,当我按下右箭头键时,它继续向右移动,当我按下左箭头键时,它继续向左移动,依此类推(使用按键事件)。但是每次调用绘制组件时,其他可移动对象的移动都会变得非常缓慢。我怎样才能顺利运行。我怎样才能阻止砖 block 每次都被粉刷?

最佳答案

假设您的代码摘录来自您的 paintComponent() 方法,那么您在那里所做的工作比您应该做的要多得多。在每次更新时,您的 paintComponent() 必须从磁盘读取每个文件(I/O 非常昂贵),并从其内容构造一个 BufferedImage(不一定便宜)。然后它只是丢弃图像,它的大小似乎至少有几十 kB,最终将开始对 GC 施加压力。

除非您有理由期望图像文件会在您的程序运行时被修改(并且可能即使它们被修改)您可以通过一次读取所有文件来显着提高性能每个,并保留 BufferedImage 对象以供 paintComponent() 重复使用。如果图像的相对位置没有改变,那么您甚至可以考虑从它们的内容构建一个大图像,然后让 paintComponent() 绘制它。

关于java - paintComponent 方法绘制大量图片比较耗时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37489181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com