이미지 처리에 Graphics32을 사용하고 있습니다. 그 기능을 살펴보면 클리핑 마스크가 제대로 구현되었는지 아직 보지 못했습니다. 나는 여기 저기에서 "클리핑 (clipping)"이라는 용어를 보지만, 다른 것을 언급하는 것으로 보인다.Graphics32를 사용하여 클리핑 마스크 만들기
간단히 말해서, 나는 하나의 레이어가 다른 레이어의 "엿보기 홀"로 기능 할 필요가 있습니다. 레이어 A는 레이어 B에 투영되어야하지만 레이어 B 만 보입니다. (더 이상 클리핑 마스크가 무엇인지 다시 정의 할 필요가 없습니다.)
만약 제가 제시하고 싶은 다른 레이어의 비트 맵이라면 그렇게하기가 어렵지 않을 것입니다. this trick을 사용하십시오. 그러나 무엇이 복잡합니까? 레이어의 비트 맵은 레이어가 표시 할 내용을 많이 알려주지 않습니다. 층이 될 수
- (부분적) 는 비트 맵에 아무런 효과
회전.
이렇게 실제로 구현할 준비가되지 않았습니까? 이것에 대한 제안은 나 자신?
진행
나는 Graphics32의 소스에 몇 가지 유용한 요소를 발견했다. 예를 들어,이 선언을 사용하여 :type
TLayerAccess = class(TBitmapLayer);
보호 방법에 접근하기 위해, 나는 정확히 화면에 마찬가지로, 비트 맵으로 그린 단지이 층을 가지고 TLayerAccess(ABitmapLayer).Paint(ABitmap32)
를 호출 할 수 있습니다.
graphics32는 32 비트 비트 맵을 단독으로 사용하며 블렌딩에 사용되는 비트 맵의 알파 채널입니다. 내가 사용할 수있는 다른 알파 필드 (예 : 클리핑 영역 등)를 알지 못합니다. 다른 "마스터 알파"만 있습니다. 나는 할 것이다. 1. 알파 비트 맵 (모두 흰색, 알파 채널은 비트 맵 좌표의 클리핑 패스)을 결정하고 원래 비트 맵을이 비트 맵에 곱한 다음 비트 맵을 대상으로 렌더링합니다. –
레이어 B의 어떤 부분이 표시되는지 어떻게 정의합니까? – iamjoosy
@iamjoosy 용기 (TImage32)에 그려진 부분을 볼 수 있습니다. –