首頁 >後端開發 >C++ >如何從滑鼠位置正確縮放和平移影像?

如何從滑鼠位置正確縮放和平移影像?

DDD
DDD原創
2024-12-30 06:40:14497瀏覽

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