2010-11-12 13 views
7

Nel mio altro (non correlato) question, @Meleak aveva SnapsToDevicePixels sparsi per tutto il codice (nella sua risposta), ho scoperto che è usato per rendere le cose più nitide. Quindi la domanda, perché non è usata ovunque poiché farà sembrare le cose migliori? O ci sono aspetti negativi di cui ho bisogno di essere a conoscenza? Quando dovrebbe/non dovrei usarlo?Utilizzare UseLayoutRounding & SnapsToDevicePixels Da utilizzare sempre?

risposta

2

In tal modo si disabilita lo subpixel rendering, che migliora la nitidezza ma anche sconfigge resolution independence di WPF. Può essere una buona o una cattiva cosa, a seconda di ciò che stai facendo nella tua app, dal punto di vista della grafica.

Vedere Pixel Snapping su MSDN per una spiegazione completa.

+21

Disattiva subpixel _positionning_, non _rendering_ (un percorso tracciato continuerà a essere renderizzato con anti-aliasing). Arrotonda semplicemente i limiti dei componenti in modo che abbiano coordinate e dimensioni intere. Neanche l'indipendenza dalla risoluzione viene sconfitta, poiché l'arrotondamento viene eseguito _dopo_ convertendo i valori indipendenti del dispositivo nello spazio del dispositivo. –

+0

@Nicolas, beh, è ​​più difficile eseguire il rendering utilizzando i subpixel quando tutti i contorni vengono spezzati ai valori effettivi dei pixel ... L'esempio del percorso di ictus funzionerebbe, ma ad es. linee rette e riempimenti non lo farebbero. Inoltre, dal momento che l'indipendenza della risoluzione ruota attorno all'essere indipendenti dalla griglia dei pixel, non riesco a vedere come sarebbe raggiunto quando si è agganciato a quella griglia di pixel. Anche se l'arrotondamento viene eseguito dopo la conversione del sistema di coordinate, ci saranno probabilmente piccole differenze nel rendering tra i dispositivi. –

+7

Sì, ci saranno piccole differenze, ma la tua applicazione sarà approssimativamente la stessa in 96 o 300 dpi. Questo è ciò che intendo per _resolution independence_. –

Problemi correlati