如何在C#中缩放图像?

21

我想要为图片实现缩放。 我不想调整PictureBox的大小,而是想调整图片本身的大小。

我该如何实现?

2个回答

37

其中一种解决方法如下:

  1. 创建所需尺寸的新图像(例如原始图像大小的200%或50%)
  2. 使用Graphics.DrawImage(Image, Rectangle)将原始图像绘制到新图像上,该方法在给定位置和给定大小处将给定图像绘制到新图像上
  3. 将新图像设置为PictureBox的源

另一种方法是简单地创建一个新的位图实例:

Size newSize = new Size((int)(originalBitmap.Width * zoomFactor), (int)(originalBitmap.Height * zoomFactor));
Bitmap bmp = new Bitmap(originalBitmap, newSize);

不要忘记添加滚动条以滚动图像。 - RvdK
@PoweRoy是正确的 - 最好将PictureBox放入ScrollView中。这样做是无需麻烦的。 - Thorsten Dittmar
缩放后图像的网格如何更改?这是否意味着像素的坐标已更改? - OPV
@OPV 不太确定你的意思。源图像被重新采样以匹配新的大小。这意味着如果你减小尺寸,你会失去像素,如果你增加尺寸,像素需要加倍(好的算法在这里进行插值)。无论如何,你都会失去原始图像信息,这意味着如果你想允许用户放大和缩小图像,你需要保留对原始图像的引用。否则,你将重新采样之前已经被重新采样过的图像,这看起来很丑。 - Thorsten Dittmar

2
我使用了一个网络浏览器来完成这个。最初的回答是:

我用网络浏览器实现了这个。

//loads the image
myWebBrowser.Navigate(@"C:\myimage.png");

然后我使用SendKeys来放大和缩小

,最初的回答。
myWebBrowser.Select(); //Selects browser.
SendKeys.Send("^{+}"); //Sends the control + key combo, causing the browser to zoom in. Replace the "+" with a "-" to zoom out.

这种方法有点奇怪,但对我非常有效。希望你也能从中受益!

原始答案翻译成中文是“最初的回答”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接