레이어 지원으로 페인팅 도구를 구현하려고합니다. 각 레이어에 대해 WritableRaster를 만듭니다. 캔버스를 표시하려면 레이어를 병합해야합니다. 이 작업을 수행하는 가장 효율적인 방법은 무엇입니까? 나는 bufferedImage를 사용하고, 래스터를 설정하고 각 레이어를 알파 합성물이있는 그래픽 컨텍스트에 그릴 수 있습니다. 그러나 데이터 수준에서 병합하고 단일 이미지를 그리는 것이 더 좋고/빠르지 않습니까?래스터 합치기
편집 : 프로필을 작성했습니다. 내가 전에 각 계층에 대한 BufferedImage의 대신 WritableRasters을 사용하고 눈에 띄는 지연이 없었다
//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);
:이처럼 내 현재의 접근 방식은 모습입니다.
내 다음 단계는 상단 및 하단 레이어를 캐싱하여 3 개의 이미지 만 그릴 수 있습니다. 아마도 그 문제를 해결할 수있을 것입니다.