Condividi tramite


Miglioramento delle prestazioni evitando il ridimensionamento automatico

Se si passa solo l'angolo superiore sinistro di un'immagine al metodo DrawImage , Windows GDI+ potrebbe ridimensionare l'immagine, riducendo così 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 la dimensione fisica del dispositivo di visualizzazione corrente sia il più vicina possibile alle dimensioni fisiche nel dispositivo in cui è stata creata.

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());

Nella figura seguente viene illustrato il rendering dell'immagine due volte.

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