Domanda

Anti aliasing non può essere spento nel WPF.Ma voglio rimuovere l'aspetto sfocato dei caratteri WPF quando sono piccoli.

Una possibilità potrebbe essere quella di utilizzare un componente .net 2.0.Sembra che perderebbe la capacità di trasparenza e il supporto di Blend.Non l'ho mai provato però.

Qualcuno ha una soluzione per questo?Eventuali svantaggi da esso?

Grazie

È stato utile?

Soluzione

Hai provato a mettere a WindowsFormsHost controllo su una finestra/controllo WPF?Ciò consentirà a WPF di eseguire il rendering di un controllo WinForms.

AGGIORNAMENTO novembre 2012:Questa domanda e risposta hanno 4 anni. Da allora il rendering del testo è migliorato in WPF.Non inserire controlli WinForms nelle app WPF;quello era un modo hacker per correggere il rendering dei caratteri.Non è più necessario.

Altri suggerimenti

L'anti-alias può essere disattivato avviando WPF 4.0 con la seguente opzione:

TextOptions.TextFormattingMode="Display"

SnapsToDevicePixels non ha assolutamente alcun effetto sul rendering del testo.

Microsoft ha un blog dedicato al rendering del testo in WPF qui Blog testuale WPF

Le cose sono decisamente migliorate in .NET 4.0.

Compensa gli oggetti che disegni, di cui non vuoi avere l'antialiasing, di 0,5 px.Ciò farà sì che il motore di disegno disegni SU i pixel effettivi, anziché il disegno al limite dei pixel (che è l'impostazione predefinita).Quando si disegna sul bordo di un pixel, l'antialiasing avviene normalmente sui pixel circostanti.

Questo è simile al disegno di Quarts su Mac.

Modificare:Scusa, non avevo letto la domanda.Questo non funziona per i caratteri, solo per le forme.Lascerò qui il commento come riferimento, però.

Prova a usare il UIElement.SnapsToDevicePixels proprietà sugli elementi dell'interfaccia utente della finestra.Le persone tendono a riferire che funziona meglio per grafica e linee, ma ho notato miglioramenti anche nel rendering del testo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top