首页 >后端开发 >C++ >如何从鼠标位置正确缩放和平移图像?

如何从鼠标位置正确缩放和平移图像?

DDD
DDD原创
2024-12-30 06:40:14496浏览

How to Correctly Zoom and Translate an Image from a Mouse Location?

从鼠标位置缩放和平移图像

在这种情况下,图像“跳跃”并且无法从重新定位的原点进行缩放,因为从鼠标位置到图像中心的平移未正确计算。另外,缩放图像后的平移没有考虑缩放后的图像大小,导致结果不正确。

要解决此问题,变换顺序应如下:

  1. 翻译为 (0, 0):将图像移动到原点,以便您可以应用来自
  2. 缩放图像:在 (​​0, 0) 处应用缩放系数。
  3. 翻译回鼠标位置:添加鼠标位置回到图像中心应该在的位置。

这是一个示例实施:

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn