首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在没有透明度的画布上绘制PNG图形?

在没有透明度的画布上绘制PNG图形?
EN

Stack Overflow用户
提问于 2013-02-02 06:00:33
回答 1查看 1.4K关注 0票数 2

我见过很多关于如何绘制透明图像的问题,但我的情况正好相反。我有一个可以加载任何文件类型的TPicture,包括PNG。然后我读取TPicture.Graphic并在TBitmap的画布中直接调用Draw,然而,当绘制图像时,它继承了原始PNG图像的透明度。

现在的代码非常简单,只是...

代码语言:javascript
代码运行次数:0
运行
复制
MyPicture.LoadFromFile(SomeFilename);
MyBitmap.Canvas.StretchDraw(SomeRect, MyPicture.Graphic);

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

只使用画布绘制方法时,如何在没有原始透明度的情况下将PNG图形直接绘制到画布上?我不想创建太多的图形对象和绘制太多的次数,因此我只有上面两行代码的原因。我希望有一种方法可以用一些特殊的机制来做一些像BitBlt这样的事情。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-02 06:10:21

在Delphi XE2中预建的唯一方法有一个缺陷,不能正常工作。取而代之的是,在空白画布上绘制空白或任何您想要的背景。然后在顶部绘制透明图像。

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14655732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档