.NET Framework 4.0和Aero Glass问题的绘图

Wor*_*der 5 .net-4.0 aero windows-7

在我的应用程序中,我有一个表单,我通过使用DWM API的方法DwmExtendFrameIntoClientArea来调整,以扩展Aero Glass标题栏的高度,以便在Aero框架上绘制我的表单客户区的一部分.为了达到这个效果,我还在客户区域的一部分绘制了一个黑色矩形,它在玻璃框架上方,因此它看起来很透明,正如许多在线文章所暗示的那样.这在Windows Vista/Windows 7下运行良好但是当我下载VS 2010并使用.NET Framework 4.0作为我的trarget框架来构建我的应用程序时,这种方法不再有效.问题是黑色矩形是可见的,即在Aero玻璃上绘图时,黑色不再被认为是透明的.有没有人知道这可能有什么问题以及如何克服它?

小智 0

如果这没有帮助,请原谅我,但是他们有可能只是改变了调色板吗?通常情况下,这些 Windows 互操作类型 API 似乎除了默认调色板之外还可以使用 PBGRA 调色板,并且它们的默认调色板可能已从一个框架版本更改为另一个框架版本。它应该足够简单来测试这是否正确。

(我在渲染硬件光标时发现了类似的问题,在某些情况下透明和黑色会混淆。最终证明是我错误地计算了PBGRA,使得BGR之一大于A,这可能是你的情况背景应为透明颜色。)

使用 DWM API 方法还存在其他复杂情况。我不完全确定,但根据记忆,设置新边距有些复杂 - 如果我没记错的话,它们都需要具有相同的符号(+/-)或伪影(例如突然出现的黑色背景)有时会出现。