17

在 WPF 中禁用硬件加速的过程是什么?究竟是什么?它是 Windows 设置、Visual Studio 设置还是您在 WPF 项目代码中更改的内容?它只会影响您正在运行的程序还是会影响整个系统?

4

4 回答 4

46

Window您可以在从 .Net 3.5 SP1 开始的级别禁用它。

public partial class MyWindow : Window
{
    public MyWindow()
        : base()
    {
        InitializeComponent();
    }

    protected override void OnSourceInitialized(EventArgs e)
    {
        var hwndSource = PresentationSource.FromVisual(this) as HwndSource;

        if (hwndSource != null)
            hwndSource.CompositionTarget.RenderMode = RenderMode.SoftwareOnly;

        base.OnSourceInitialized(e);
    }
}

或者您可以订阅SourceInitialized窗口事件并执行相同操作。

或者,您可以将其设置在进程级别

RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;

软件渲染的优先顺序是:

  1. DisableHWAcceleration 注册表项
  2. ProcessRenderMode
  3. 渲染模式(每个目标)
于 2012-03-21T10:38:27.943 回答
24

它是机器范围的注册表设置。有关注册表项和与自定义 WPF 渲染相关的其他详细信息,请参阅WPF 文档中的图形渲染注册表设置

列出的关键是: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics\DisableHWAcceleration

MSDN 文档对于 .NET 4.5 “不可用”,因此这可能是一个仅适用于 4.0 或更低版本的弃用选项。

于 2010-01-30T22:13:17.220 回答
16

在 4.0 版中,您还可以使用RenderOptions.ProcessRenderMode设置进程范围的首选项 ( http://msdn.microsoft.com/en-us/library/system.windows.media.renderoptions.processrendermode.aspx )。

于 2012-04-10T10:36:49.640 回答
-8

这是系统范围的设置,从桌面右键单击以弹出一个弹出菜单,单击属性,然后在其中查看视频设置以禁用硬件加速,或者可能有一个用于图形设置的系统托盘图标. 这是系统范围的,而不是本地的。

于 2010-01-30T22:00:08.587 回答