How does one disable hardware acceleration in wpf?

后端 未结 4 1483
被撕碎了的回忆
被撕碎了的回忆 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)

提交回复
热议问题