有没有办法让bmps透明?

Posted

技术标签:

【中文标题】有没有办法让bmps透明?【英文标题】:Is there a way to make bmps transparent? 【发布时间】:2013-07-18 18:11:45 【问题描述】:

(使用 WinApi)有没有办法:

    制作透明像素? 不知何故,不是使用透明度,而是让图像动态获取背景颜色和纹理,并用这些纹理填充某些颜色,例如:如果我有一个视频游戏精灵并且它的背景颜色是白色,我能以某种方式获取那些白色像素并用背景颜色/纹理填充它们?

【问题讨论】:

也许吧,但 WinAPI 是一种痛苦的方式。 谷歌“transblt”并获得第一击。 致对我投反对票的人:我能做些什么来改善这个问题? 【参考方案1】:

如果您创建 32 位位图,则每个像素的 24 位用于 RGB 值,而额外的 8 位用于 Alpha 通道。只需将 alpha 设置为 0 即可获得完全透明。

在创建使用 24 位或更小的像素的位图时,透明色通常由位图左下角的像素指示。

无论哪种方式,创建透明位图只是等式的一半。创建透明位图本身很容易,但是您必须以透明方式渲染位图。 Win32 API 具有用于此目的的 TransparentBlt()AlphaBlend() 函数,并且有大量在线教程和博客解释如何使用它们。

【讨论】:

以上是关于有没有办法让bmps透明?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法让 IE8 在 `:before` 伪元素上保持不透明度?

有没有办法使控件对 WPF 中的鼠标事件透明?

是否可以让 HTML5 颜色输入值透明?

有没有办法我可以一直在桌面上绘制一个透明的 WPF 应用程序?

如何让 qt 设计器自定义 QOpenGLWidget 小部件背景透明?

将位图 (bmp) 转换为具有透明度的 png (Windows c++)