У меня есть действительно странная проблема с Графикой. Метод DrawImage.
Я имею контроль PictureBox в управлении Панелью со свойством AllowScroll = верный. Программа сокращает изображение на мелких деталях, базирующихся на области, выбранной пользователем.
Я загружаю изображение 300x547 и выбираю область (красный прямоугольник):
программа правильно сокращает изображение:
затем, я загружаю другое изображение 427x640:
сопроводительный текст http://img34.imageshack.us/img34/7950/56727000.png
и затем, как результат я вижу, что изображение не сокращается правильно. Каждый файл img.jpg имеет правильно ширину и высоту, но оттянутое изображение является слишком маленьким:
вот фрагмент кода - он сохраняет растровую область, выбранную пользователем:
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);
Как Вы видите, код является тем же для img1.jpg из изображения A и из Изображения B. Я пытаюсь разрешить, что глупая проблема слишком долго, я не знаю то, что является причиной той проблемы. Я попробовал различные перегрузки метода DrawImage без успеха
Разрешенный! значение DPI по умолчанию Системы. Рисование. Битовый массив = 96, если я открываю изображение с DPI! = 96 затем проблема, описанная выше, происходит. Для избавлений от него я должен был использовать метод SetResolution:
Bitmap result = new Bitmap(width, height);
result.SetResolution(OriginalIMG.HorizontalResolution, OriginalIMG.VerticalResolution);
это разрешает проблему :) Спасибо за всех для справки!:)
Я бы попробовал: (отредактировано)
g.DrawImage(
OriginalIMG,
new Rectangle( Point.Empty, bmp.Size ),
selectedAreaRECT.X, selectedAreaRECT.Y,
selectedAreaRECT.Width, selectedAreaRECT.Height,
GraphicsUnit.Pixel);
, чтобы увидеть, имеет ли это значение.
Хотя это не имеет ничего общего с вашей проблемой: вы забываете о некоторых вещах .Dispose (), и я не уверен, почему вы должны использовать .Clone () изображение.