从鼠标位置缩放和平移图像
在这种情况下,图像“跳跃”并且无法从重新定位的原点进行缩放,因为从鼠标位置到图像中心的平移未正确计算。另外,缩放图像后的平移没有考虑缩放后的图像大小,导致结果不正确。
要解决此问题,变换顺序应如下:
这是一个示例实施:
private void pnl1_Paint(object sender, PaintEventArgs e) { // Translate to (0, 0) e.Graphics.TranslateTransform(-img.Width / 2, -img.Height / 2); // Scale the image e.Graphics.ScaleTransform(zoom, zoom); // Translate back to mouse location e.Graphics.TranslateTransform(mouse.X, mouse.Y); // Draw the image at the new location e.Graphics.DrawImage(img, 0, 0); }
以上是如何从鼠标位置正确缩放和平移图像?的详细内容。更多信息请关注PHP中文网其他相关文章!