我试图在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)图片。这很慢。
我想我知道为什么。它复制了大小调整后的位图,而不仅仅使用旧位图的一部分,但我不知道该怎么做。
如何使其平滑变焦?
答案 0 :(得分:0)
好的,最后我想出来...... 我需要的是切掉我的位图最终代码是&gt;
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;