我正在尝试实现具有图层支持的绘画工具。我为每一层创建一个 WritableRaster。要显示画布,必须合并图层。最有效的方法是什么?我可以使用 bufferedImage,设置光栅并使用 alpha 合成将每一层绘制到 Graphics 上下文。但是在数据级别合并它然后绘制单个图像不是更好/更快吗?
编辑:我做了一些分析。这就是我目前的方法:
//tmp.getRaster().setRect(layer.getRaster()); // VERY slow
tmp.getRaster().setDataElements(0, 0, layer.getRaster()); //slow
g2.drawImage(tmp, 0, 0, scaledDim.width, scaledDim.height, null);
我之前对每一层都使用了 BufferedImages 而不是 WritableRasters,并且没有明显的延迟。
我的下一步是缓存顶层和底层,因此只有 3 个图像要绘制。那可能会解决问题。