gpt4 book ai didi

delphi - 在没有透明度的情况下将 PNG 图形绘制到 Canvas 上?

转载 作者:行者123 更新时间:2023-12-03 18:19:03 25 4
gpt4 key购买 nike

我见过很多询问如何绘制透明图像的问题,但我的情况恰恰相反。我有一个 TPicture,我可以在其中加载任何文件类型,包括 PNG。然后我读取 TPicture.Graphic 并直接在 TBitmap 的 Canvas 中调用 Draw。但是,当绘制图像时,它会保留原始 PNG 图像的透明度。

目前的代码很简单,就...

MyPicture.LoadFromFile(SomeFilename);
MyBitmap.Canvas.StretchDraw(SomeRect, MyPicture.Graphic);

现在的问题是我正在绘制的 Canvas 已经有一个图像,并且这个 PNG 被绘制在它的一部分上。当 PNG 具有透明背景时,通常它显示为白色。但是,由于它直接在 Canvas 上绘制透明图形,因此它会保持这些区域透明。

如何在仅使用 Canvas 绘制方法的情况下直接将 PNG 图形绘制到 Canvas 上而没有其原始透明度?我不想创建太多图形对象并绘制太多次,因此我上面只有两行代码。我希望有一种方法可以实现类似 BitBlt 的一些特殊机制。

最佳答案

Delphi XE2 中唯一预置的方法有缺陷,不能正常工作。相反,在空白 Canvas 上绘制空白或您想要的任何背景。然后在上面绘制透明图像。

如果您不在空白 Canvas 上绘图,您可以为您计划绘制 png 的区域调用位图 Canvas 的 FillRect 方法。

关于delphi - 在没有透明度的情况下将 PNG 图形绘制到 Canvas 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14655732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com