2011-02-04 45 views
1

我有兩個不同的TPngObject SRC和DST。 SRC已分配有PNG圖形。如何將選定的區域從TPngObject複製到保留其透明度的另一個TPngObject

我的代碼:

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

,但我需要到src的某些部分複製到DST。我嘗試複製並在畫布上繪製,但不能透明處理。

+0

當我讀取TPngImage的代碼時,如果'TransparencyMode`設置爲`ptmPartial`,那麼alpha通道將被尊重。我想知道爲什麼當您加載PNG圖像時,T​​ransparencyMode沒有被設置爲「ptmPartial」。 – 2011-02-04 11:30:28

回答

2

我想你應該可以用AlphaBlend函數來做到這一點。您使用{SRC/DEST}.Canvas.Handle作爲HDC參數。

我希望你也可以通過BitBlt來實現。

我仍然好奇你的TPNGImage實例的TransparencyMode屬性的值。

1

我不使用TPNGImage,但我會採取一個刺...這是否支持像素屬性或Scanline?如果是這樣,您只能複製所需的像素,手動設置r,g,b和一個值。我用pf32bit位圖做了很多。正如您注意到的那樣,繪製它不會保留透明度。您必須手動設置Alpha值。

如果TPNGImage不支持像素或掃描線,可以先將png轉換爲位圖,然後按照這種方式進行。

相關問題