嘗試從滑鼠位置縮放和平移圖像時,圖像跳躍並且無法從重新定位的原點進行擴充。旋轉、縮放和平移功能可以正確運行,無需翻譯到滑鼠位置。
為了實現從滑鼠位置縮放和平移影像,我們會採用以下策略:
private void pnl1_Paint(object sender, PaintEventArgs e) { // Apply rotation angle @ center of bitmap e.Graphics.TranslateTransform(img.Width / 2, img.Height / 2); e.Graphics.RotateTransform(ang); e.Graphics.TranslateTransform(-img.Width / 2, -img.Height / 2); // Apply scaling factor - focused @ mouse location e.Graphics.TranslateTransform(mouse.X, mouse.Y, MatrixOrder.Append); e.Graphics.ScaleTransform(zoom, zoom, MatrixOrder.Append); e.Graphics.TranslateTransform(-mouse.X, -mouse.Y, MatrixOrder.Append); // Apply drag (pan) location e.Graphics.TranslateTransform(imgX, imgY, MatrixOrder.Append); // Draw "bmp" @ location e.Graphics.DrawImage(img, 0, 0); }
以上是如何在 C# 中從滑鼠位置正確縮放和平移影像?的詳細內容。更多資訊請關注PHP中文網其他相關文章!