J'ai un problème vraiment étrange avec la méthode Graphics.DrawImage. J'ai le contrôle PictureBox dans le contrôle Panel avec propriété AllowScroll = true. Le programme coupe l'image sur les petites pièces en se basant sur la zone sélectionnée par l'utilisateur.Winforms C#: graphics.DrawImage problème
je charge l'image 300x547 et sélectionnez la zone (le rectangle rouge):
alt text http://img341.imageshack.us/img341/8796/63796391.png
programme coupe correctement l'image:
alt text http://img689.imageshack.us/img689/6459/69242903.png
puis, je charge une autre image 427x640 :
alt text http://img34.imageshack.us/img34/7950/56727000.png
puis, comme résultat je vois que l'image n'est pas coupée correctement. Chaque fichier img.jpg a une largeur bien & hauteur, mais l'image dessinée est trop petit: alt text http://img641.imageshack.us/img641/1977/25643796.png
est ici l'extrait de code - il enregistre la zone bitmap sélectionnée par l'utilisateur:
Image OriginalIMG= (Image)((PictureBox)panel1.Controls["picBox"]).Image.Clone()
Bitmap bmp = new Bitmap(selectedAreaRECT.Width, selectedAreaRECT.Height);
Graphics g = Graphics.FromImage(bmp);
g.DrawImage(OriginalIMG, 0,0, selectedAreaRECT, GraphicsUnit.Pixel);
g.Save();
g.Dispose();
bmp.Save(AppDomain.CurrentDomain.BaseDirectory + @"\Temp\" + "img1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
Comme vous le voyez, le code est le même pour le img1.jpg de l'image A et de l'image B. J'essaie de résoudre ce problème stupide depuis trop longtemps, je ne sais pas quelle est la raison de ce problème. J'ai essayé différentes surcharges de la méthode DrawImage, sans succès
EDIT
Résolu! la valeur dafault DPI du System.Drawing.Bitmap est = 96, si j'ouvre une image avec DPI! = 96 alors le problème décrit ci-dessus se produit. Pour se débarrasser de lui, je avais besoin d'utiliser la méthode de setResolution:
Bitmap result = new Bitmap(width, height);
result.SetResolution(OriginalIMG.HorizontalResolution, OriginalIMG.VerticalResolution);
qui résout le problème :) Merci pour tout le monde de l'aide! :)
Avez-vous regardé les propriétés DPI de ces images? –
Voulez-vous dire HorizontalResolution et VerticalResolution? ils sont = 96 – Tony
Jolies photos :-) – Steven