Partager via


Comment : améliorer les performances en évitant la mise à l'échelle automatique

GDI+ peut automatiquement mettre à l'échelle une image pendant que vous la dessinez, ce qui peut affecter les performances. Par ailleurs, vous pouvez contrôler la mise à l'échelle de l'image en passant les dimensions du rectangle de destination à la méthode DrawImage.

Par exemple, 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.

e.Graphics.DrawImage(image, 50, 30) ' upper-left corner at (50, 30)
e.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 la résolution utilisée par GDI+ (habituellement 96 points par pouce) est différente de la résolution stockée dans l'objet Image, la méthode DrawImage mettra à l'échelle l'image. Par exemple, supposons qu'un objet Image ait une largeur de 216 pixels et une valeur de résolution horizontale stockée de 72 points par pouce. Comme 216/72 est égal à 3, DrawImage dimensionnera l'image pour qu'elle ait une largeur de 3 pouces à une résolution de 96 points par pouce. Autrement dit, DrawImage affichera une image d'une largeur de 96 x 3 = 288 pixels.

Même si votre résolution d'écran n'est pas de 96 points par pouce, GDI+ mettra probablement l'image à l'échelle comme si la résolution d'écran était de 96 points par pouce. Ceci est dû au fait qu'un objet GDI+Graphics est associé à un contexte de périphérique, par conséquent, lorsque GDI+ interroge le contexte de périphérique pour la résolution d'écran, le résultat est habituellement 96, quelle que soit la résolution d'écran réelle. Vous pouvez éviter la mise à l'échelle automatique en spécifiant le rectangle de destination dans la méthode DrawImage.

Exemple

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 dimensionnée. Dans le deuxième cas, la largeur et la hauteur (mesurées en pixels) du rectangle de destination sont spécifiées comme étant les mêmes que la largeur et la hauteur de l'image d'origine. L'illustration suivante montre l'image rendue deux fois.

Texture mise à l'échelle

Dim image As New Bitmap("Texture.jpg")

e.Graphics.DrawImage(image, 10, 10)
e.Graphics.DrawImage(image, 120, 10, image.Width, image.Height)
Image image = new Bitmap("Texture.jpg");

e.Graphics.DrawImage(image, 10, 10);
e.Graphics.DrawImage(image, 120, 10, image.Width, image.Height);

Compilation du code

L'exemple précédent est destiné à une utilisation avec Windows Forms et nécessite PaintEventArgs e, qui est un paramètre du gestionnaire d'événements Paint. Remplacez Texture.jpg par le nom et le chemin d'accès d'une image valides sur votre système.

Voir aussi

Autres ressources

Images, bitmaps et métafichiers

Utilisation des images, bitmaps, icônes et métafichiers