Изменение размера изображения из графики? - PullRequest
4 голосов
/ 17 февраля 2011

Я пытаюсь изменить размер своего изображения после копирования с экрана и не могу понять, как это сделать.Учебники, которые я читал, рекомендуют использовать Graphics.DrawImage для изменения размера изображения, но когда я запускаю этот код, он не меняет размер.

Bitmap b = new Bitmap(control.Width, control.Height);
Graphics g = Graphics.FromImage(b);
g.CopyFromScreen(control.Parent.RectangleToScreen(control.Bounds).X, control.Parent.RectangleToScreen(control.Bounds).Y, 0, 0, new Size(control.Bounds.Width, control.Bounds.Height), CopyPixelOperation.SourceCopy);

g.DrawImage(b, 0,0,newWidth, newHeight);

Любая помощь будет оценена, спасибо!

Ответы [ 2 ]

6 голосов
/ 17 февраля 2011

Попробуй это. Графика не «заменит» изображение, когда вы используете DrawImage - она ​​рисует входное изображение в своем источнике, которое совпадает с изображением, которое вы пытаетесь нарисовать на нем.

Возможно, более краткий способ сделать это, но .....

Bitmap b = new Bitmap(control.Width, control.Height);
using (Graphics g = Graphics.FromImage(b)) {
   g.CopyFromScreen(control.Parent.RectangleToScreen(control.Bounds).X, 
      control.Parent.RectangleToScreen(control.Bounds).Y, 0, 0, 
      new Size(control.Bounds.Width, control.Bounds.Height),
      CopyPixelOperation.SourceCopy);
}
Bitmap output = new Bitmap(newWidth, newHeight);
using (Graphics g = Graphics.FromImage(output)) {
  g.DrawImage(b, 0,0,newWidth, newHeight);
}
0 голосов
/ 17 февраля 2011

Есть ли причина, по которой вы не можете просто использовать PictureBox ?Этот контроль заботится о растяжении для вас.

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