WPF在远程桌面上无法渲染

9
我在远程桌面连接中遇到了WPF应用程序渲染的问题。 应用程序的外观呈现出来,但没有内容,就像窗口没有绘制一样。 相反,屏幕的先前内容显示在其位置上。 这是一个针对Vista和Win 7的应用程序运行的问题,从XP和Win7远程控制也会遇到此问题。 问题不是特定于应用程序的,如果我创建一个新的WPF应用程序,只在窗口上放置一个文本块,它也无法运行。 (在VS2008中的窗口预览也不会显示。)是否有一些诀窍可以在RDP下运行WPF?

看起来微软在Win7的最终版本中已经修复了这个问题。现在我能够从运行XP和Win7的机器上查看在Win7上运行的应用程序。 感谢您的帮助。让我们希望他们也将这个修复程序放入Vista中。 - MrLink
7个回答

10

我在Kevin Dente的博客(来自推特帖子)上看到他在虚拟机中使用WPF应用程序时遇到了问题。 虽然不同于远程桌面,但这个问题可能是相同的。 Kevin通过创建一个DWORD注册表值来禁用硬件加速并将其设置为1来解决了他的问题。

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics\DisableHWAcceleration

他最初的博客文章在这里:http://weblogs.asp.net/kdente/archive/2009/10/19/visual-studio-2010-beta-2-editor-performance-fix-running-on-a-virtual-machine.aspx

这可能不是你确切的解决方案,但也许可以指引你朝正确的方向去解决。


1
我一直在使用WPF应用程序时遇到问题,当屏幕被拔掉时,在几个不同的远程支持应用程序(TeamViewer、Zoho、GotoAssist)下完全显示为空白。这个方法解决了问题!请注意,我必须创建那个注册表键,因为它之前不存在。 - N8allan
1
这对我有用。我在没有显示器连接的远程(Teamviewer)计算机上运行VS 2015。WPF控件是不可见的,但没有报告错误。我从Guru3D下载了一个DirectX基准测试应用程序,它也以同样的方式表现...这让我想到它与DirectX有关。无论如何,这似乎已经解决了问题,但我不喜欢制作注册表项。 - Bryan Greenway
2
这个问题已经被解决了。通过Chrome远程桌面使用VS 2019。 - SetFreeByTruth
如果您正在使用远程连接到无头机器,那么这个解决方案绝对有效。我已经使用了几年,并且在Windows 10上仍在使用它。 我还安装了“虚拟”显示适配器,这也解决了这个问题,但需要实际花费资金。 - Banjo Batman
1
修复了我的问题,还使用Chrome远程桌面连接VS2019。非常感谢! - drkthng

2
WPF应该可以在RDP上渲染;它很聪明,知道何时可以使用硬件进行渲染,何时不能时则会回退到基于自己的GDI+软件渲染。请确保远程计算机上运行的是.NET Framework 3.5 SP1,因为有关远程过程调用的更改可能会导致问题(请参见下面的链接)。
我已经开发了一个WPF应用程序,过去6个月它在RDP上运行得非常好。(从Vista和Win7到XP、Vista和Server 2003)。然而,有一个重要的注意点,它使用经典主题进行渲染。因此,如果您使用的控件没有经典主题,则不会呈现。如果您只是在窗口上放置一个文本框,那么显然这不是您的问题。
查看这个问题,里面有一些可能有帮助的链接:Are there problems with rendering WPF over Remote Desktop under Windows XP?

1
我刚开始测试RDP时,遇到了这个问题:ribbonwindow未正确显示-透明背景变为白色,关闭最小化/最大化按钮消失,窗口底部的圆角变成了正方形,并且几乎无法选择顶部行的功能按钮。原来对我来说有一个简单的解决方法。右键单击RDP连接图标(我已将其保存在桌面上),选择“编辑”,然后选择“体验”选项卡,并将“自动检测连接质量”更改为“LAN(10 Mbps或更高)”。这对我有用。Ade

对我来说,在 WPF .NET 5 应用程序中,如果选择“自动”,只有一个视图无法渲染... 选择“局域网(10 Mbps 或更高)”解决了这个问题。 - M.Ahlin

0
我们的应用程序曾经在自定义进度条方面存在问题。 我们通过将边框控件的背景颜色设置为白色来解决这个问题。这让我想到透明背景可能存在问题。

我有着非常相似的经验。在使用SetWindowCompositionAttribute API实现模糊效果的WPF Windows上。 - b.pell

0

0

你是否也尝试过Win7最新的RDP - Win7连接?问题在于WPF不使用GDI来绘制元素。

VNC客户端(如UltraVNC)可能会对你有帮助,因为它们使用更简单的算法,更像是发送位图。


是的,我目前正在运行Win7到Win7(7100)的RDP,但没有产生任何效果。老实说,我不会使用VNC,这只是一个个人应用程序,目前在我的家用机器上运行,我希望能够远程监控。如果无法通过RDP实现,我更有可能将其转移到WinForms并更改远程访问软件。谷歌/必应搜索显示应该可以通过RDP实现这一点。我没有找到另一个类似问题的例子。 - MrLink

-5

在远程桌面上显示WPF内容并不需要特殊技巧。我们基于WPF的应用程序可以在RDP上正常渲染(从多台机器尝试过),没有任何问题。我们甚至使用了动画、渐变、WriteableBitmap等功能,也没有遇到任何问题。


1
我也有这个问题。你的答案完全误导了人们,让他们认为问题是错误的。 - Simon
1
不好的回答。仅仅因为你没有这个问题,不意味着这个问题不存在。 - Mark Richman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接