Lorsque vous essayez de zoomer et de redimensionner une image à partir de l'emplacement de la souris, l'image saute et ne parvient pas à évoluer à partir de l'origine déplacée. La rotation, la mise à l'échelle et le panoramique fonctionnent correctement sans se traduire par l'emplacement de la souris.
Pour réaliser un zoom et une traduction d'une image à partir de l'emplacement de la souris, nous utilisons les stratégies suivantes :
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); }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!