/ / Ridimensionamento System.Controls.Image con la modalità di ridimensionamento del vicino più vicino - c #, wpf, image, ridimensiona, controlla

Ridimensionamento di System.Controls.Image con la modalità di ridimensionamento del vicinato più vicina - c #, wpf, image, ridimensiona, controlla

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 № 1

Per 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.