Graphics类的DrawImage方法在原始图像中进行意外剪辑

时间:2017-05-25 03:26:31

标签: c# .net graphics picturebox drawimage

我有这个代码将位图添加到图片框

pictureBoxTemp.Image = finalImage;

其中finalImage变量是保存图像的位图。当我使用这种方法。结果很好。以下是此代码的图片:enter image description here

然后,我决定添加缩放功能,因此有必要在我的picturebox上添加一个paint事件..这是我的paint事件代码:

 protected void pictureBox_Paint(object sender, PaintEventArgs e, ref ZoomInfo imageZoom)
 {
     //Conditions to avoid to proceed further.
     if (((PictureBox)sender).Image == null) { return; }

     float futurePosX = (imageZoom.translateX) * (1 - imageZoom.zoom) / imageZoom.zoom;
     float futurePosY = (imageZoom.translateY) * (1 - imageZoom.zoom) / imageZoom.zoom;

     Graphics g = e.Graphics;

     g.Clear(Color.Transparent);
     g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
     g.ScaleTransform(imageZoom.zoom, imageZoom.zoom);

     g.DrawImage(((PictureBox)sender).Image, futurePosX, futurePosY);
 }

默认情况下,futurePosYfuturePosX均为0,因此g.DrawImage()会将其绘制在0,0位置。调用paint时,image更改为: enter image description here

请注意,图像底部现在有一个黑色区域,表示图像被剪裁。

我现在还不知道为什么DrawImage()剪裁我的图像,但再次使用pictureBox.Image = Bitmap时,图像完全适合pictureBox。有任何建议如何纠正这个?

0 个答案:

没有答案