How does one disable hardware acceleration in wpf?

后端 未结 4 1473
被撕碎了的回忆
被撕碎了的回忆 2020-12-14 10:31

What is the procedure for disabling hardware acceleration in WPF? What is it exactly? Is it a Windows setting, a Visual Studio setting, or something you alter in the code of

相关标签:
4条回答
  • 2020-12-14 10:35

    You can disable it on a Window level starting from .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);
        }
    }
    

    or you can subscribe to SourceInitialized event of the window and do the same.

    Alternatively you can set it on Process level:

    RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;
    

    The precedence order for software rendering is:

    1. DisableHWAcceleration registry key
    2. ProcessRenderMode
    3. RenderMode (per-target)
    0 讨论(0)
  • 2020-12-14 10:36

    It is a machine-wide registry setting. See Graphics Rendering Registry Settings in the WPF docs for the registry key and other details relating to customizing WPF rendering.

    The key listed is: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics\DisableHWAcceleration

    The MSDN document is "not available" for .NET 4.5, so this may be a depricated option that only works in 4.0 or below.

    0 讨论(0)
  • 2020-12-14 10:41

    In version 4.0, you can also use RenderOptions.ProcessRenderMode to set a process wide preference (http://msdn.microsoft.com/en-us/library/system.windows.media.renderoptions.processrendermode.aspx).

    0 讨论(0)
  • 2020-12-14 10:55

    That is a system wide setting, from the desktop, right click to bring up a popup menu, click on properties, and look around in there for the video settings to disable Hardware acceleration or that there may be a system tray icon for the graphics settings. This is system wide and not local.

    0 讨论(0)
提交回复
热议问题