我有这个代码将位图添加到图片框
pictureBoxTemp.Image = finalImage;
其中finalImage变量是保存图像的位图。当我使用这种方法。结果很好。以下是此代码的图片:
然后,我决定添加缩放功能,因此有必要在我的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);
}
默认情况下,futurePosY
和futurePosX
均为0,因此g.DrawImage()
会将其绘制在0,0位置。调用paint时,image更改为:
请注意,图像底部现在有一个黑色区域,表示图像被剪裁。
我现在还不知道为什么DrawImage()
剪裁我的图像,但再次使用pictureBox.Image = Bitmap
时,图像完全适合pictureBox。有任何建议如何纠正这个?