Tengo un problema realmente extraño con el método Graphics.DrawImage.C# winforms: graphics.DrawImage problema
Tengo el control PictureBox en el control del Panel con propiedad AllowScroll = verdadero. El programa corta la imagen en piezas pequeñas basándose en el área seleccionada por el usuario.
me carga la imagen de 300x547 y seleccionar el área (rectángulo rojo):
programaalt text http://img341.imageshack.us/img341/8796/63796391.png
corta correctamente la imagen:
alt text http://img689.imageshack.us/img689/6459/69242903.png
entonces, me carga otra imagen 427x640 :
alt text http://img34.imageshack.us/img34/7950/56727000.png
y luego, como resultado, veo que la imagen no está cortada correctamente. Cada archivo tiene una anchura adecuada img.jpg & altura, pero la imagen dibujada es demasiado pequeño: alt text http://img641.imageshack.us/img641/1977/25643796.png
aquí está el fragmento de código - que guarda el área de mapa de bits seleccionado por el usuario:
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);
Como se ve, el código es el mismo para img1.jpg de la imagen A y de la imagen B. Estoy tratando de resolver ese estúpido problema por mucho tiempo, no sé cuál es la razón de ese problema. Probé diferentes sobrecargas del método DrawImage, sin éxito
EDITAR
Resuelto! el valor predeterminado de DPI del System.Drawing.Bitmap es = 96, si abro una imagen con DPI! = 96, se produce el problema descrito anteriormente. Para deshacerse de él, que necesitaba usar el método SetResolution:
Bitmap result = new Bitmap(width, height);
result.SetResolution(OriginalIMG.HorizontalResolution, OriginalIMG.VerticalResolution);
que resuelve el problema :) Gracias por todo el mundo en busca de ayuda! :)
¿Has mirado las propiedades DPI de esas imágenes? –
¿Quiere decir HorizontalResolution y VerticalResolution? Son = 96 – Tony
Buenas fotos :-) – Steven