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