【问题标题】:Swing image display optimizationSwing 图像显示优化
【发布时间】:2012-05-30 10:15:24
【问题描述】:

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

编辑: 确实是 rect 调用减慢了它的速度,并且可以通过删除透明通道来大大加快速度。话虽如此,加快速度并包括透明度仍然会很好。代码再简单不过了,所以我希望通过做一些不同的事情会有所帮助。

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);
    }       
}

【问题讨论】:

  • 你能发布你的绘画方法吗?
  • 贴一些代码,更好的是,发布SSCCE
  • 图片是否显示在 BufferedImage 中?在没有代码的情况下,我们再次陷入困境。
  • 图像对象不是缓冲图像。只是一张图片。

标签: java image swing


【解决方案1】:

这与上下文无关,但是您可以在预先计算的调色板中查找颜色,而不是在每个循环中创建 Color 的实例吗?也许这可以稍微提高性能。

编辑:例如,List<Integer> 用作 RGB 查找表 hereQueue<Color> 用作 here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 2021-06-08
    • 2010-10-09
    • 2023-03-14
    相关资源
    最近更新 更多