C# 如何实现Aero';s玻璃效果跨平台? 重复:

C# 如何实现Aero';s玻璃效果跨平台? 重复:,c#,.net,wpf,aero,C#,.net,Wpf,Aero,如果我使用Winforms并用它编写win32应用程序,我可以在Vista中看到Aero glass效果,但在XP中看不到 如何在不同的平台上实现相同的外观?我正在使用WPF 作为一个附带问题,微软是否使用WPF编写了Aero glass特效?如果是这样,玻璃效果不应该是其他平台上默认的WPF外观吗?您指的是什么“空气效果”?如果你说的是窗户玻璃,恐怕你运气不好,因为玻璃效果只能通过Vista的桌面窗口管理器实现 如果您只是在寻找窗口透明度、圆角等,那么在XP中这当然是可能的。请查看更多信息。


如果我使用Winforms并用它编写win32应用程序,我可以在Vista中看到Aero glass效果,但在XP中看不到

如何在不同的平台上实现相同的外观?我正在使用WPF

作为一个附带问题,微软是否使用WPF编写了Aero glass特效?如果是这样,玻璃效果不应该是其他平台上默认的WPF外观吗?

您指的是什么“空气效果”?如果你说的是窗户玻璃,恐怕你运气不好,因为玻璃效果只能通过Vista的桌面窗口管理器实现


如果您只是在寻找窗口透明度、圆角等,那么在XP中这当然是可能的。请查看更多信息。

< P> OK,所以大多数DWM的东西都是由DWMAPI.DLL的DLL处理的,它都在C++中,因为这就是微软写API的方法,你可能已经注意到,调用API中的方法,你必须使用一些未编组的布尔类型等等,这是因为它必须达到非托管代码,某些需要执行的操作对于.NET来说太危险,无法在不受干扰的情况下进行监视。您可能还注意到,所有返回类型实际上都不是您作为“out”类型放入Vars中的返回,因此代码可以在内存中修改它们,然后这些信息可以读回托管.NET代码。至于在Windows XP中获得类似效果的方法,我能想到的唯一方法是使用Windows百叶窗,然后制作一个带有渐变背景的半透明WPF表单(具有玻璃般的效果),这将非常容易做到,但在Vista和XP中,窗口看起来不合适,我认为这不是一个好主意

希望这有帮助:p


Simon

只有Windows支持.NET。其他平台支持.NET的一些跨平台实现,但这不是一回事。无论如何,该主题不是.NET的一部分,它是内置在操作系统中的,.NET只是一个更高级别的包装器。@Ed:对于WPF来说不是这样。因为WPF不使用标准控件并绘制所有内容,所以框架通过主题定义控件的外观,主题可以更改和复制。@Cameron,我就是这么想的。它对Windows的依赖性尽可能少,对吗?莫诺也没有WPF?琼:是的,是的。WPF对Win32的唯一依赖性是窗口句柄本身。窗口内的所有内容都由WPF处理。不幸的是,现在Mono不支持WPF(尽管它支持Silverlight)。并且重写WPF以不使用DirectX:PThanks,是的,我指的是玻璃效果。桌面窗口管理器不在.NET I bet?桌面窗口管理器以操作系统为中心(内置于Vista中)。它不是.NET库的一部分。