创建Glass窗口就像在WPF中调用DwmExtendFrameIntoClientArea一样简单,但这只是诀窍的一半。如果你禁用航空,并获得类似XP的皮肤,那就是痛苦开始的地方:WPF玻璃窗后备?
在XP(或禁用航空)中,您必须调用DrawThemeBackground以获得“透明的感觉”,Internet Explorer也会对其执行此操作顶部,尝试禁用航空,看看。
我已经熟了的应用程序,不只是是,fallback gracefully when Aero is disabled in Windows.Forms.
问题:但在WPF做不同的是,它的OnRender给你的DrawingContext,如何(OnPaint中当量阿瓦隆。)一个借鉴DrawThemeBackground WINAPI调用?
对,这就是我最初尝试也开始油漆等,但我还是没能画到的DrawingContext。我的Aero Glass WPF窗口扩展(之前的一个博客条目)使用类似的技巧,虽然没有处理HDC,但工作得很好。 我认为我们应该尝试改为DrawThemeBackground - > System.Windows.Media.Drawing - > System.Windows.Media.DrawingBrush,并使用DrawingContext.DrawRectangle(ourDrawThemeBackgroundBrush,...)在OnRender覆盖,但我没有包装自己在那附近呢。 – Ciantic 2009-10-05 18:36:12
也许你可以创建一个正确大小的图像,使用Graphics.FromImage获得一个DC,在这个DC上调用DrawThemeBackground并在你的DrawingContext中绘制图像......但我不确定它会如何工作,它可能会导致性能问题 – 2009-10-05 19:53:41
如果我们可以让“干净”的图形对象在哪里绘制,并将其转换为绘图...我会尝试。绘制到现有的图形是一样的,在我的形式的东西,所以这个问题可能归结为将其转换为绘图/ DrawingImage。 – Ciantic 2009-10-05 21:51:20