[英]Resizing bitmap in PictureBox
我正在尝试正确放大/缩小PictureBox中的图像。 我有这个代码。
private Image GridMap;
private double ZoomFactor = 1;
protected override void OnMouseWheel(MouseEventArgs e)
{
if (e.Delta > 0)
{
ZoomFactor*=1.2;
}
else if (e.Delta < 0 && ZoomFactor >1 )
{
ZoomFactor /= 1.2;
}
Size newSize = new Size((int)(GridMap.Width * ZoomFactor), (int)(GridMap.Height * ZoomFactor));
Bitmap bmp = new Bitmap(GridMap, newSize);
MainGrid.Image = bmp;
}
MainGrid在哪里PictureBox我想缩放。
此代码有效,但是滚动后等待1-2秒非常慢,然后显示缩放的图片。 (800,800)图片。 这很慢。
我想我知道为什么。 它复制了调整大小的位图,而不是仅使用旧的位图,但是我不知道该怎么做。
如何使其平滑缩放?
好的,最后我想出了...我需要切出我的位图最终代码的一部分是>
protected override void OnMouseWheel(MouseEventArgs e)
{
if (e.Delta > 0 && ZoomFactor >MaxZoom)
{
ZoomFactor-=0.01;
}
else if (e.Delta < 0 && ZoomFactor <1 )
{
ZoomFactor += 0.01;
}
Rectangle srcRect = new Rectangle(0, 0, (int)(GridMap.Width * ZoomFactor), (int)(GridMap.Height * ZoomFactor));
Bitmap cropped = ((Bitmap)GridMap).Clone(srcRect, MainGrid.Image.PixelFormat);
MainGrid.Image = cropped;
}
以及使用以下命令启动PictureBox
this.MainGrid.SizeMode = PictureBoxSizeMode.Zoom;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.