我有一个位图需要用另一个位图的一部分替换背景。一切正常,直到我在 WindowsXP 上启用 ClearFont 。
为了更好地解释我的问题,让我们将第一个位图标记为bmpDestination
,将第二个位图标记为bmpSource
。
以下是bmpSource
的样子:
以下是bmpDestination
的样子:
当 ClearType 关闭时,以下是正确结果的显示方式:
当 ClearType 打开时,这是他们合并的错误结果:
ClearType 会改变文本背景颜色的某些部分,因此它们不再是白色(RGB( 255, 255, 255 )
),而是白色和文本颜色的组合。
我使用BitBlt()
和单色位图来创建遮罩,并模拟透明度。我也试过使用TransparentBlt()
,但结果相同。
如果启用了ClearType,我如何合并bmpSource
和bmpDestination
,这样我可以像上面一样创建正确的结果?
感谢您的帮助。
最好的问候。
答案 0 :(得分:2)
在白色背景上渲染带有黑色文本的树视图。使用具有灰度抗锯齿功能的字体。不要使用ClearType消除锯齿。我非常确定你可以使用fdwQuality
CreateFont
参数之一来实现这一目标,但我不会发誓。
每个像素在白色和黑色之间将具有灰色阴影。您可以将其解释为透明度。白色是完全透明的;黑色是完全不透明的。使用此信息创建具有透明度的位图。在多色背景上渲染此透明位图。