如何将选定区域从TPngObject复制到另一个TPngObject,保持其透明度

时间:2011-02-04 05:59:01

标签: delphi image graphics canvas png

我有两个不同的TPngObject SRC和DST。 SRC已分配PNG图形。

我的代码:

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

但我需要将src的某些部分复制到dst。我尝试在画布上复制和绘制,但不能使用透明。

2 个答案:

答案 0 :(得分:2)

我认为您应该可以使用AlphaBlend功能执行此操作。您使用{SRC/DEST}.Canvas.Handle作为HDC参数。

我希望您也可以使用BitBlt实现此目标。

我仍然对TPNGImage实例的TransparencyMode属性的值感到好奇。

答案 1 :(得分:1)

我不使用TPNGImage,但我会对此进行一次尝试......是否支持Pixels属性或Scanline?如果是这样,您只能复制所需的像素,手动设置r,g,b和值。我用pf32bit位图做了很多。正如您所注意到的那样,绘制它不会保留透明度。您必须手动设置Alpha值。

如果TPNGImage不支持像素或扫描线,您可以先将png转换为位图并按此方式进行。