我可以打开上下文菜单,但无法通过 VNC 查看打开的菜单列表。(我知道我可以通过直接检查 vnc 服务器机器来打开上下文菜单)我在不同的 vnc 服务器/客户端机器上进行了测试(尽管它们都是 windows Vista)和不同的 wpf 应用程序,但我仍然看不到任何菜单列表.
这是报告的问题吗?我找到了一些有关与 windows 桌面相关的 wpf 问题的信息,但我不了解 vnc。
补充:我在我的 vnc 环境下的 windows 本机应用程序或 windows 窗体应用程序上没有这个问题。
我没有阅读/发现任何关于通过远程连接查看 WPF 应用程序的已知问题。但是,如果您考虑远程连接是如何工作的,我想对这个问题进行一些猜测,甚至可能是一个解决方案。
当您安装任何远程桌面软件时,您实际上做了两件事:设置中继器以中继输入命令并添加充当帧服务器的显示适配器,即,它不是将屏幕内容输出到监视器而是发送信息通过网络。
如您所知,WPF 利用 DirectX 来加速其渲染(受 GPU 限制),不幸的是,所有显卡加速都不能通过远程桌面连接工作。
我认为在您的特定情况下发生的事情是 WPF 在尝试绘制上下文菜单时并没有回退到使用它的软件渲染管道 - 可能是因为上下文菜单是Popup一个单独的可视化树。
值得尝试的是强制您的 WPF 应用程序使用软件呈现。
void OnLoaded(object sender, EventArgs e)
{
HwndSource hwndSource = (HwndSource)PresentationSource.FromVisual(this);
HwndTarget hwndTarget = hwndSource.CompositionTarget;
hwndTarget.RenderMode = RenderMode.SoftwareOnly;
}
如果确实如此,您有两个选择:强制 WPF 使用软件渲染管道或尝试部署Hewlett Packard的高性能远程桌面访问软件解决方案。
高温下,
参考
-用于解决 WPF 中的图形问题的 Microsoft 指南。
- WPF 中的硬件加速
- HP 远程图形软件
更新:对于其他搜索并找到此答案的人,您需要更改 VNC 客户端设置以启用alpha blending。正如@mcdrewski 所指出的,默认情况下 VNC 不会检测/渲染 alpha 混合窗口。启用 alpha 混合会产生成本,您会注意到 VNC 客户端有点滞后。
解决方法是:勾选VNC Server的管理属性中的“Capture alpha blending”选项——henon
我能够在 VNC 中显示 Alpha 混合窗口或菜单的唯一方法是在服务器的 VNCconfig 应用程序中的桌面下关闭“在连接 VNC 查看器时使屏幕空白”选项。
它只是发生在 WPF 应用程序或任何其他应用程序上吗?尝试将桌面颜色质量更改为 16 位。
在 VNC 服务器选项中查找名为UseCaptureBlt的选项并将其标记为TRUE