Beim Versuch, ein Bild von der Mausposition aus zu zoomen und zu skalieren, wird das Bild springt und kann nicht vom verschobenen Ursprung aus skaliert werden. Drehung, Skalierung und Schwenken funktionieren korrekt, ohne auf die Mausposition zu übertragen.
Um das Zoomen und Verschieben eines Bildes von der Mausposition aus zu erreichen, wenden wir die folgenden Strategien an:
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); }
Das obige ist der detaillierte Inhalt vonWie kann ich in C# ein Bild von der Mausposition aus richtig zoomen und schwenken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!