如何 *** 透明位图(绘制一张透明背景的单色位图)

生活常识 2023-04-20 19:19生活常识www.baidianfengw.cn

怎么画一个人的背影?用透明背景绘制单色位图。

在上一篇文章中,我留下了一个难题如何绘制背景透明的单色位图。今天白癜风网小编我们将揭开谜底。

说实话,我不是GDI方面的专家,所以可能有比下面描述的两种 更好的解决方案,我不 我不知道。为了演示透明背景的效果,我将窗口的背景颜色设置为工作区颜色。

1采用 MaskBlt API

以上的 需要的代码量最少,但我个人觉得有点大材小用。它使用所谓的四进制光栅操作,就像三进制一样,只是因为我不 我不想创建另一个图案画笔。(光栅操作0x00AA0029实际上是一个空操作(NOP)运算符,不对目标区域做任何操作。我没有。我记不太清了,但我是通过查阅文件了解到的。)宏MAKEOP4的意思是对于蒙版中的所有白色像素,不执行任何操作(NOP),而对于每个黑色像素,执行SRCCOPY操作。

请注意,背景色从未使用过。毕竟我们要画的是背景透明的位图。,我们可以直接删除设置和恢复DC背景色的相关代码。

这是传统的两步方案。之一种 是将前景设置为黑色,背景设置为白色,然后使用SRCAND擦除要覆盖的像素。这具有将所有前景像素擦除为零,保持背景完整的效果。第二个blit做同样的事情,使用SRCPAINT。这意味着背景像素需要被视为黑色,以便当它们与目标或在一起时,目标像素保持不变。前景像素获得所需的前景颜色。

此 可以通过否定之一个blit来缩短前景和背景,这样黑色就不必在背景色和文本色之间移动。

很难说这种缩短是否真的是一种整体的提升。一些显示驱动程序可能具有高度优化的SRCAND处理程序,而它们不太可能具有优化的0x00220326处理程序。

练习为什么可以 你能颠倒第二步,把它转换成MERGEPAINT吗?)

2传统的二步式

细节,我的更爱!

雷蒙德陈 s 《The Old New Thing》是我最喜欢的博客之一,里面包含了很多关于Windows的小知识,对于Windows平台的开发者来说真的很有帮助。本文来自《Drawing a monochrome bitmap with transparency》

如何把位图变成透明背景可以做成背景透明的位图格式。

Copyright@2015-2025 白癜风网版板所有