Winforms чистое растровое изображение? - PullRequest
2 голосов
/ 22 января 2012

Я пытался изменить размер моей фотографии.Я просмотрел множество сайтов: 1 , 2 , 3 .

Последняя ссылка (3) по крайней мере изменит размеризображение, за исключением старого, остается за измененным.Как это происходит?И почему?Если я уменьшу winform, а затем восстановлю winform, старый образ исчезнет, ​​и у меня останется только измененная версия.Как мне избавиться от старого изображения?

Есть идеи?

Ответы [ 2 ]

1 голос
/ 22 января 2012

Разве вы не очищаете поверхность графического объекта?возможно из-за того старого изображения, которое все еще могло показываться.посмотрите здесь http://msdn.microsoft.com/en-us/library/system.drawing.graphics.clear.aspx

1 голос
/ 22 января 2012

Эта первая ссылка из C # Tutorial - Редактирование изображений: сохранение, обрезка и изменение размера дала вам код.

Есть ли причина не использовать его?

private static Image resizeImage(Image imgToResize, Size size)
{
   int sourceWidth = imgToResize.Width;
   int sourceHeight = imgToResize.Height;

   float nPercent = 0;
   float nPercentW = 0;
   float nPercentH = 0;

   nPercentW = ((float)size.Width / (float)sourceWidth);
   nPercentH = ((float)size.Height / (float)sourceHeight);

   if (nPercentH < nPercentW)
      nPercent = nPercentH;
   else
      nPercent = nPercentW;

   int destWidth = (int)(sourceWidth * nPercent);
   int destHeight = (int)(sourceHeight * nPercent);

   Bitmap b = new Bitmap(destWidth, destHeight);
   Graphics g = Graphics.FromImage((Image)b);
   g.InterpolationMode = InterpolationMode.HighQualityBicubic;

   g.DrawImage(imgToResize, 0, 0, destWidth, destHeight);
   g.Dispose();

   return (Image)b;
}

Не игнорируйте InterpolationMode. Это сделает изображение более привлекательным.

Кроме того, я не думаю, что вы хотите использовать CreateGraphics() в этом контексте. Возможно, вы захотите использовать фактическое растровое изображение для хранения измененного изображения или просто использовать объект Graphic из события рисования элемента управления, в котором вы хотите отобразить изображение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...