2009-06-01 5 views
3

J'essaie de dessiner deux images côte à côte à l'aide de l'espace de noms Dessin C#. Voici un exemple très simple qui suppose que nous avons deux images de la même taille:C#: Conserver la taille malgré une résolution différente à l'aide de Graphics.DrawImage

Image[] oldImages = GetOldImages(); 

var newImage = new Bitmap(oldImages[0].Width + oldImages[1].Width, 800); 

using (var newImageGraphics = Graphics.FromImage(newImage)) 
{ 
    newImageGraphics.DrawImage(oldImages[0], 0, 0); 
    newImageGraphics.DrawImage(oldImages[1], oldImage[0].Width, 0); 
    newImageGraphics.Save(); 
} 

Cela fonctionne bien si la résolution des deux vieilles images sont les mêmes. Cependant, si les résolutions sont différentes, l'image est redimensionnée, ce qui provoque des problèmes. Par exemple, si la première image a une résolution différente, la deuxième image sera mal positionnée.

Est-ce que quelqu'un sait comment je peux résoudre ce problème facilement? Idéalement, je veux que la hauteur et la largeur de l'image originale restent les mêmes lorsqu'elles sont dessinées sur la nouvelle image.

Répondre

1

Fondamentalement, vous devrez redimensionner la deuxième image avant de l'ajouter à la nouvelle image. Bien que, comme vous le dites, vous souhaitiez conserver la hauteur et la largeur d'origine, vous devez modifier la taille du canevas de la deuxième image. Cela augmente la taille de l'image en ajoutant un espace vide autour de l'image réelle. Si la deuxième image est plus grande que la première, vous devrez le faire sur la première image à la place.

4

essayer cette astuce:

Bitmap picture_1 = new Bitmap(picture_1_path); 
Graphics graphics = Graphics.FromImage(picture_1); 
Bitmap picture_2 = new Bitmap(picture_2_path); 
picture_2.SetResolution(graphics.DpiX, graphics.DpiY); 

//Then do with pictures anything 
+0

J'ai eu un problème avec la résolution de deux images, et cela a fait l'affaire. – agarcian

Questions connexes