2009-08-03 2 views
3

복잡한 정렬 및 크기 조정 옵션을 적용 할 수있는 여러 이미지를 지정하여 오브젝트를 "겉치레"로 장식 할 수있는 Java 용 그래픽 시스템이 있습니다.알파 블렌딩을 사용하여 나중에 그림을 그리기 위해 여러 이미지를 단일 이미지로 결합

매우 (저전력 장치의 경우 특히) 수행하기 위해 벽지를 처음 칠 때 내부 이미지에 이미지 페인팅을 수행 한 다음 해당 합성 이미지를 대상 그래픽 컨텍스트로 복사하여 가져옵니다 화면. 그 후, 오브젝트의 사이즈가 변경되었을 때에 만, 합성이 재 작성되어, 후속의 페인트는, 클립 된 영역을 합성으로부터 타겟 그래픽스 문맥에 복사하는 것뿐입니다.

알파 채널 투명도가있는 PNG 이미지가있는 경우 컴포지트를 그릴 때 알파 채널이 손실된다는 점을 제외하고는 솔루션이 실제로 잘 작동합니다. 즉, 컴포지트는 모든 픽셀이 완전히 불투명합니다. 따라서 온 스크린 그래픽 컨텍스트에 대한 후속 복사는 벽면에 붙여진 오브젝트 뒤의 내용을 보여주지 못합니다.

완전히 투명 픽셀을 걸러 내기 위해 RGBImageFilter를 사용했지만 블렌드 투명성 작업을 수행 할 때 그 솔루션을 볼 수 없습니다.

알파 채널이있는 이미지를 칠할 수있는 방법을 알고 있고 알파 값이있는 두 픽셀이 겹치는 경우 결합 된 사람이 있습니까?

답변

3

합성 이미지에 어떤 유형의 이미지를 사용합니까?

반투명을 허용하는 TYPE_INT_ARGB로 BufferedImage를 사용하고 유형을 설정해야합니다.

+0

저는 java.awt.component.createImage()를 사용하고 있습니다. BufferedImage를 사용하여 어떻게되는지 알 수 있습니다. –

+0

정말 고마워요. BufferedImage를 놓친 이유는 무엇입니까? –

+2

BufferedImage는 Java가 가지고있는 가장 유용한 단일 이미지 하위 클래스입니다. 당신은 할 수있을 때 항상 그것을 사용해야합니다. 이 이미지가 자주 사용되면 BufferedImage(). setAcceleration()을 0보다 큰 매개 변수로 호출하여 하드웨어 가속을 활성화해야합니다. 자세한 내용은 API를 읽으십시오. –