Condividi tramite


Miglioramento delle prestazioni evitando il ridimensionamento automatico

Se passi solo l'angolo superiore sinistro di un'immagine al metodo DrawImage, Windows GDI+ potrebbe ridimensionare l'immagine, il che ridurrebbe le prestazioni.

La chiamata seguente al metodo DrawImage specifica un angolo superiore sinistro di (50, 30) ma non specifica un rettangolo di destinazione:

graphics.DrawImage(&image, 50, 30);  // upper-left corner at (50, 30)

Anche se questa è la versione più semplice del metodo DrawImage in termini di numero di argomenti obbligatori, non è necessariamente la più efficiente. Se il numero di punti per pollice nel dispositivo di visualizzazione corrente è diverso dal numero di punti per pollice nel dispositivo in cui è stata creata l'immagine, GDI+ ridimensiona l'immagine in modo che le dimensioni fisiche nel dispositivo di visualizzazione corrente siano il più vicino possibile alle dimensioni fisiche nel dispositivo in cui è stato creato.

Se si desidera impedire tale ridimensionamento, passare la larghezza e l'altezza di un rettangolo di destinazione al metodo DrawImage. L'esempio seguente disegna due volte la stessa immagine. Nel primo caso, la larghezza e l'altezza del rettangolo di destinazione non vengono specificate e l'immagine viene ridimensionata automaticamente. Nel secondo caso, la larghezza e l'altezza (misurata in pixel) del rettangolo di destinazione vengono specificate come la larghezza e l'altezza dell'immagine originale.

Image image(L"Texture.jpg");
graphics.DrawImage(&image, 10, 10);
graphics.DrawImage(&image, 120, 10, image.GetWidth(), image.GetHeight());

La figura seguente mostra l'immagine di cui è stato eseguito il rendering due volte.

schermata di una finestra che contiene due versioni di un'immagine su scale diverse