Partager via


Amélioration des performances en évitant la mise à l’échelle automatique

Si vous passez uniquement le coin supérieur gauche d’une image à la méthode DrawImage , Windows GDI+ peut mettre à l’échelle l’image, ce qui diminuerait les performances.

L’appel suivant à la méthode DrawImage spécifie un coin supérieur gauche de (50, 30), mais ne spécifie pas de rectangle de destination :

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

Bien qu’il s’agisse de la version la plus simple de la méthode DrawImage en termes de nombre d’arguments requis, elle n’est pas nécessairement la plus efficace. Si le nombre de points par pouce sur l’appareil d’affichage actuel est différent du nombre de points par pouce sur l’appareil où l’image a été créée, GDI+ met à l’échelle l’image de sorte que sa taille physique sur le périphérique d’affichage actuel soit aussi proche que possible de sa taille physique sur l’appareil où elle a été créée.

Si vous souhaitez empêcher cette mise à l’échelle, transmettez la largeur et la hauteur d’un rectangle de destination à la méthode DrawImage . L’exemple suivant dessine deux fois la même image. Dans le premier cas, la largeur et la hauteur du rectangle de destination ne sont pas spécifiées, et l’image est automatiquement mise à l’échelle. Dans le deuxième cas, la largeur et la hauteur (mesurées en pixels) du rectangle de destination sont spécifiées pour être identiques à la largeur et à la hauteur de l’image d’origine.

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

L’illustration suivante montre l’image rendue deux fois.

capture d’écran d’une fenêtre qui contient deux versions d’une image à différentes échelles