我有兩個不同的TPngObject SRC和DST。 SRC已分配有PNG圖形。如何將選定的區域從TPngObject複製到保留其透明度的另一個TPngObject
我的代碼:
dst := TpngImage.createblank(COLOR_RGB, 16, 900, 60);
src.Assign(Image2.Picture.Graphic);
,但我需要到src的某些部分複製到DST。我嘗試複製並在畫布上繪製,但不能透明處理。
我有兩個不同的TPngObject SRC和DST。 SRC已分配有PNG圖形。如何將選定的區域從TPngObject複製到保留其透明度的另一個TPngObject
我的代碼:
dst := TpngImage.createblank(COLOR_RGB, 16, 900, 60);
src.Assign(Image2.Picture.Graphic);
,但我需要到src的某些部分複製到DST。我嘗試複製並在畫布上繪製,但不能透明處理。
我想你應該可以用AlphaBlend
函數來做到這一點。您使用{SRC/DEST}.Canvas.Handle
作爲HDC
參數。
我希望你也可以通過BitBlt
來實現。
我仍然好奇你的TPNGImage實例的TransparencyMode
屬性的值。
我不使用TPNGImage,但我會採取一個刺...這是否支持像素屬性或Scanline?如果是這樣,您只能複製所需的像素,手動設置r,g,b和一個值。我用pf32bit位圖做了很多。正如您注意到的那樣,繪製它不會保留透明度。您必須手動設置Alpha值。
如果TPNGImage不支持像素或掃描線,可以先將png轉換爲位圖,然後按照這種方式進行。
當我讀取TPngImage的代碼時,如果'TransparencyMode`設置爲`ptmPartial`,那麼alpha通道將被尊重。我想知道爲什麼當您加載PNG圖像時,TransparencyMode沒有被設置爲「ptmPartial」。 – 2011-02-04 11:30:28