如果我使用Winforms并使用它编写win32应用程序,我可以在Vista中看到Aero玻璃效果,但不能在XP中看到。
我如何在不同平台上实现相同的外观?我正在使用WPF。
作为一个附带问题,微软是否使用WPF编写了Aero玻璃效果?如果是这样,玻璃效果不应该是其他平台上的默认WPF外观吗?
答案 0 :(得分:5)
你指的是什么“航空效应”?如果你在谈论窗户玻璃,那么我担心你运气不好,因为玻璃效果只能通过Vista的桌面窗口管理器来实现。
如果您只是寻找窗户透明度,圆角等,那么这在XP中肯定是可行的。查看this article了解详情。
答案 1 :(得分:1)
好的,所以大多数DWM的东西都是由一个名为dwmapi.dll的DLL处理的,它全部都在C ++ COM中,因为这就是微软编写它的API的方式,你可能已经注意到要调用API中的方法了使用一些解组的布尔类型等,这是因为它必须达到非托管代码,一些需要进行的操作对于.NET来说太危险而无法干扰,你可能还会注意到所有的返回类型都不是t实际上返回您将Vars作为“out”类型返回,因此代码可以在内存中修改它们,然后可以将该信息读回到托管的.NET代码中。至于在Windows XP中获得类似效果的方法,我能想到的唯一方法是使用Windows Blinds然后制作具有渐变背景(具有类似玻璃效果)的半透明WPF形式,这将非常容易,但窗口在Vista和XP中看起来不合适,我认为这不是一个好主意。
希望这会有所帮助:P
西蒙