java - Swing 图片显示优化

标签 java image swing

我在 Swing 中显示图像。我在图像上绘图(一堆 drawRect() 调用)并刷新屏幕。图像是不变的,但绘制在上面的对象不是。有什么办法可以避免随时重绘图像吗?由于图形卡可能会显示图像,因此可以安全地假设 drawRect() 调用是瓶颈吗?我绘制了多达 20,000 个调用一帧(但通常不超过 3000 个)。

编辑:确实是 rect 调用减慢了它的速度,通过移除透明 channel 可以使它变得相当快。话虽这么说,但加快速度并增加透明度仍然是件好事。代码真的不能再简单了,所以我希望通过做一些不同的事情来帮助它。

public void paintComponent(Graphics g) {
    super.paintComponent(g) ;
    //grid or walkers
    g.drawImage(image, 0, 0, null);

    for(Walker w : walkArray){
        g.setColor(new Color(255,255-w.data[3], 0, w.data[2]));
        g.drawRect(w.data[0], w.data[1], 1, 1);
    }       
}

最佳答案

这是断章取意的,但你能在预先计算的调色板中查找颜色而不是创建 Color 的实例吗?在每个周期?也许这可以稍微提高性能。

编辑:例如,一个 List<Integer>用作 RGB 查找表 here , 和一个 Queue<Color>使用here .

关于java - Swing 图片显示优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10727160/

相关文章:

java - java中字符串数组到数组列表的问题

java - tomcat部署permgen空间

java - 如何防止 Apache Commons Exec 的日志输出

java - 空指针异常和 Swing

java - JSON 反序列化属性,包括 $

Android 图像缓存

具有多个拇指的 CSS 图像翻转 onclick

image - 如何获取图像中直线的直径?

Java swing 在 ContentPane 中交换 ImagePanel

java - 在 Windows 中绘制缓冲图像速度慢,在 Linux 中速度快