我创建了一个没有chrome和透明背景的WPF应用程序
WindowStyle="None" AllowsTransparency="True"
IntPtr windowHandle = new WindowInteropHelper(window).Handle;
IntPtr oldParent = SetParent(windowHandle, desktopHandle);
但每当我尝试将此窗口设置为桌面进程的子级时(因此它不受“显示桌面”命令影响)它会停止绘制。如果我将AllowTransparency更改回False,它会按预期工作,但我确实希望它是透明的,没有边框。
有人能给我任何关于如何使这项工作正确的建议吗?我可以通过在Winforms应用程序中使用相同的方法来实现此功能。
答案 0 :(得分:0)
我怀疑它适用于Winforms而不适用于WPF的原因是Winforms使用GDI进行渲染,而WPF使用DirectX。这些技术具有互操作性问题,这些问题在此处更加详细,特别是在“透明度和顶级Windows”一节中。
http://msdn.microsoft.com/en-us/library/aa970688.aspx
您可以通过在Win32窗口中托管WPF visual来解决此问题,详见此处:
http://msdn.microsoft.com/en-us/library/ms742522.aspx#hosting_a_wpf_page