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

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

DDD
發布: 2025-01-01 04:18:10
原創
205 人瀏覽過

從滑鼠位置縮放和平移影像

嘗試從滑鼠位置縮放和平移影像時,考慮應用變換以實現目標的順序至關重要想要的結果。以下是糾正該問題的一些建議和技巧:

  • 變換部門:將不同的圖形效果和變換分離到單獨的方法中。這簡化了流程並減少了潛在的錯誤。
  • 優先考慮矩陣運算:使用 Matrix.RotateAt 和 Matrix.Multiply 而不是累積矩陣轉換,因為它更有效率且不易出現不可預見的結果。
  • 最佳化的畫布選擇:使用非系統平面標籤 PictureBox 作為畫布。它支援雙緩衝,專為繪圖而設計。

在程式碼中,實作了四種縮放模式:

縮放模式

  • ImageLocation
  • ImageLocation執行影像縮放時不會改變其在影像上的位置canvas.
  • CenterCanvas:影像在縮放時保持在畫布中央。
  • CenterMouse:影像縮放並平移以與畫布對齊當前滑鼠指標位置canvas.
MouseOffset:

影像被縮放和平移上的初始滑鼠位置保持相對位置。

包含的程式碼範例產生旋轉變換並示範所有四種縮放模式的實作。縮放模式選擇由名為 ZoomMode 的枚舉器處理。

功能視覺化概述How to Correctly Zoom and Translate an Image from the Mouse Location?

範例程式碼

  • 以下程式碼是提供:
  • 畫布:新增至表單的自訂PictureBoxEx控制項(可以修改和擴充)。
  • trkRotationAngle: TrackBar 用於調整影像旋轉
radZoom_CheckedChanged:

縮放模式選擇單選按鈕的事件處理程序。

在 canvas_Paint 方法中,使用一系列矩陣轉換。 GetDrawingImageRect 和 GetDrawingImageCenterPoint 方法用於計算繪製縮放影像的正確矩形和中心點。透過以特定順序套用變換,可以縮放和平移影像,同時保持其在畫布上的位置或相對於滑鼠位置的位置。

以上是如何從滑鼠位置正確縮放和平移影像?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板