Disabilitazione antialiasing su un'immagine WPF [chiuso]
-
20-09-2019 - |
Domanda
Sto scrivendo una finestra piccola di accesso, e hanno incorporato un banner nella parte superiore della finestra di dialogo per motivi estetici. Tutto è andato bene, tranne che per default, WPF alias anti-tutta l'immagine, rendendo il testo che è stato contenuto all'interno frustrante sfocata.
Dopo un po 'di ricerca, le prime pagine dei risultati hanno mostrato che è comune convinzione che l'anti aliasing non può essere disabilitare in WPF. Può una conferma, o comunque negare questa?
E 'un problema minore per me - mi prendo il testo fuori l'immagine e invece sovrappongo un'etichetta con lo stesso testo sopra l'immagine di sfondo per ottenere lo stesso effetto (anche se devo ammettere, è un po' fastidioso ).
Grazie, Rob
Soluzione
Per quanto ne so, WPF fa sempre anti-aliasing durante il ridimensionamento di una bitmap. Tuttavia si dovrebbe essere in grado di raggiungere il tuo obiettivo, evitando la scala bitmap.
Ci sono due fasi:
- Imposta
SnapsToDevicePixels="true"
sulla vostra immagine - Imposta uno ScaleTransform sulla tua immagine in scala in modo che un pixel device = un pixel bitmap
Per calcolare lo ScaleTransform necessario, calcolare il DPI della vostra schermata come questa:
var DPI = Win32Functions.GetSystemMetrics(SM_CYICON) / SystemParameters.IconHeight * 96;
e poi per la bitmap, fare:
var scale = bitmapDPI / DPI;
var transform = new ScaleTransform(scale, scale);
Questo farà sì pixel del bitmap corrispondono esattamente con i pixel del dispositivo. WPF non allungare il bitmap, quindi non ci dovrebbe essere l'anti-aliasing.
Se si vuole allungare la vostra immagine su schermi ad alta DPI ma farlo senza anti-aliasing (ad es doppie tutti i pixel), basta allungare la bitmap nel proprio codice utilizzando qualsiasi algoritmo che ti piace e utilizzare il precedente con il bitmap allungata .
Altri suggerimenti
Non è proprio anti-aliasing - è il posizionamento dei subpixel che la causa del problema, ho scritto su di esso (e circa un controllo che risolve il problema) sul mio blog all'indirizzo:
http: // www .nbdtech.com / blog / archive / 2008/11/20 / sfocate-immagini-in-wpf.aspx