2010-01-30 22 views
13

¿Cuál es el procedimiento para deshabilitar la aceleración de hardware en WPF? ¿Qué es exactamente? ¿Es una configuración de Windows, un estudio visual o algo que modifica en el código de su proyecto wpf? ¿Afectará solo el programa que está ejecutando o lo hará a nivel de todo el sistema?¿Cómo se desactiva una aceleración de hardware en wpf?

Respuesta

-5

Esa es una configuración de todo el sistema, desde el escritorio, haga clic derecho para que aparezca un menú emergente, haga clic en Propiedades y busque la configuración de video para deshabilitar la aceleración de Hardware o que haya un icono en la bandeja del sistema para la configuración de gráficos. Esto es todo el sistema y no local.

Espero que esto ayude, Saludos cordiales, Tom.

+3

Nota: esto deshabilita TODA la aceleración de gráficos de hardware en el sistema, no solo WPF. – itowlson

+0

Esto no está disponible en la mayoría de los sistemas, ya que tanto nVidia como Ati no le permiten desactivar (o incluso alterar) la aceleración de hardware mientras sus controladores estén instalados. @itowlson tiene la respuesta correcta a esto. – Odys

+0

De acuerdo con @itowlson. Esto deshabilita toda la aceleración de hardware cuando solo se puede deshabilitar WPF mencionado a continuación – Jippers

21

Es una configuración de registro de toda la máquina. Consulte Graphics Rendering Registry Settings en los documentos de WPF para obtener la clave de registro y otros detalles relacionados con la personalización de la representación de WPF.

La clave de la lista es: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics\DisableHWAcceleration

El documento de MSDN es "no disponible" para .NET 4.5, por lo que esta puede ser una opción depricated que sólo funciona en 4.0 o menos.

+2

Esto debe aceptarse como la respuesta correcta – Odys

+1

_ [Su respuesta está en otro castillo: ¿cuándo una respuesta no es una respuesta?] (Http: //meta.stackexchange. com/questions/225370/your-answer-is-in-another-castle-when-is-an-answer-not-a-answer) _ – MickyD

+0

Es mucho mejor simplemente deshabilitarlo para SU aplicación. Ver la otra respuesta por Konstantin –

29

Puede desactivarlo en un nivel Window a partir de .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); 
    } 
} 

o puede suscribirse a SourceInitialized caso de la ventana y hacer lo mismo.

alternativa, se puede set it on Process level:

RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly; 

El orden de precedencia para la representación del software es:

  1. registro DisableHWAcceleration clave
  2. ProcessRenderMode
  3. RenderMode (per-objetivo)
Cuestiones relacionadas