Sto cercando di creare un gioco che utilizza uno stile di pixel art. Ho creato le mie risorse e le ho utilizzate come risorse, che vengono aggiunte alla finestra come oggetti System.Controls.Image.
Nel designer, risultano sempre troppo piccoli. Di conseguenza, quando li ridimensiono, diventano un po 'sfocati a causa di una sorta di interpolazione bicubica applicata su di essi.
Sono riuscito a evitare questo evitandoil ridimensionamento; Ridimensiono nella finestra di progettazione per scoprire quale dimensione è appropriata, quindi usa il prossimo più vicino ridimensionando l'immagine originale (usando un programma esterno) per ottenere il file sorgente di quella dimensione. Quindi aggiorno l'immagine nel progetto e rimuovo qualsiasi ridimensionamento, lasciandolo quindi alla dimensione originale, cioè senza interpolazione.
Come puoi immaginare, questo è piuttosto noiosoprocessi. Ho esaminato le scelte di interpolazione durante il ridimensionamento, ma la maggior parte delle risposte che riesco a trovare riguardano System.Drawing.Image, non System.Controls.Image. Ritengo che qualsiasi soluzione (se adattata) sarebbe orribile e implicherebbe conversioni / cast multipli (e forse non necessari).
C'è un modo per ottenere il prossimo vicino ridimensionamento su System.Controls.Image?
risposte:
1 per risposta № 1Per impostare la modalità di ridimensionamento, è necessario impostare il RenderOptions.BitmapScalingMode="NearestNeighbor"
opzione per l'albero visivo. È possibile impostarlo a livello di finestra.
Per risolvere il problema più grande, sembra che qualcosa stia causando il ridimensionamento delle immagini in primo luogo:
- Assicurati di aver impostato il
Stretch="None"
opzione sul controllo Immagine, - Assicurarsi che si stia utilizzando SnapsToDeveicePixels o arrotondamento layout
- Infine, se tutto il resto fallisce, imposta in modo esplicito la larghezza e l'altezza dell'immagine.
Ho anche eseguito istanze in cui il DPI del file immagine non è impostato su (credo) 90, fa sì che il renderer applichi il ridimensionamento.