Как отключить аппаратное ускорение в wpf?

Какова процедура отключения аппаратного ускорения в WPF? Что это такое? Это настройки окон, визуальная студия или что-то, что вы меняете в коде вашего проекта wpf? Будет ли это влиять только на ту программу, в которой вы работаете, или будет ли она общесистемной?

Ответ 1

Это системная настройка, с рабочего стола, щелчок правой кнопкой мыши, чтобы открыть всплывающее меню, щелкнуть по свойствам и посмотреть вокруг там, где настройки видео отключены аппаратное ускорение или что может быть значок в системном трее для графические настройки. Это системный, а не локальный.

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

Ответ 2

Вы можете отключить его на уровне 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;

Порядок приоритета для рендеринга программного обеспечения:

  • Раздел реестра DisableHWAcceleration
  • ProcessRenderMode
  • RenderMode (для каждой цели)

Ответ 3

Это системный параметр реестра. См. Параметры рецензирования графики в документах WPF для раздела реестра и других сведений, относящихся к настройке рендеринга WPF.

Ключ, указанный в списке: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics\DisableHWAcceleration

Документ MSDN "недоступен" для .NET 4.5, поэтому это может быть лишенный вариант, который работает только в 4.0 или ниже.