2011-02-04 4 views
1

두 개의 다른 TPngObject SRC 및 DST가 있습니다. SRC는 PNG 그래픽을 지정했습니다.투명도를 유지하면서 TPngObject에서 다른 TPngObject로 선택된 영역을 복사하는 방법

내 코드 :

dst := TpngImage.createblank(COLOR_RGB, 16, 900, 60); 
src.Assign(Image2.Picture.Graphic); 

는하지만 난 DST에 SRC의 일부를 복사해야합니다. 캔버스에 복사 및 그려 지려고하지만 투명하게 작동하지 않습니다.

+0

TPngImage에 대한 코드를 읽을 때'TransparencyMode'가'ptmPartial'으로 설정되면 알파 채널이 존중 될 것입니다. 왜 PNG 이미지를로드 할 때'TransparencyMode'가'ptmPartial'으로 설정되지 않는지 궁금합니다. –

답변

2

AlphaBlend 기능으로이 작업을 수행 할 수 있어야한다고 생각합니다. HDC 매개 변수는 {SRC/DEST}.Canvas.Handle입니다.

나는 BitBlt으로 이것을 달성 할 수있을 것으로 기대합니다.

TPNGImage 인스턴스의 TransparencyMode 속성 값에 대해 궁금합니다.

1

나는 TPNGImage를 사용하지 않지만, 이것으로 찌를 것이다 ... Pixels 속성 또는 Scanline을 지원합니까? 그렇다면 r, g, b 및 a 값을 수동으로 설정하여 원하는 픽셀 만 복사 할 수 있습니다. 나는 pf32bit 비트 맵을 많이 사용한다. 당신이 알아 차렸 듯이 그 그림을 그려 보면 투명성이 유지되지 않습니다. 알파 값을 수동으로 설정해야합니다.

TPNGImage가 픽셀 또는 주사선을 지원하지 않으면 먼저 png를 비트 맵으로 변환하고 그렇게 할 수 있습니다.

관련 문제