Zoomer et traduire une image à partir de l'emplacement de la souris
Lorsque vous essayez de zoomer et de traduire une image à partir de l'emplacement de la souris, il est crucial de considérer l'ordre dans lequel les transformations sont appliquées pour obtenir le résultat souhaité. Voici quelques suggestions et techniques pour résoudre le problème :
-
Division Transformation : Séparez les effets graphiques et les transformations distincts en méthodes distinctes. Cela simplifie le processus et réduit les erreurs potentielles.
-
Priorité des opérations matricielles : Utilisez Matrix.RotateAt et Matrix.Multiply au lieu d'accumuler des transformations matricielles, car elles sont plus efficaces et moins sujettes à des résultats imprévus.
-
Sélection de canevas optimisée : Utilisez une PictureBox, qui est un Étiquette plate non système, comme canevas. Il prend en charge le double tampon et est conçu pour le dessin.
Dans le code, quatre modes de zoom sont implémentés :
Modes de zoom
-
ImageLocation : La mise à l'échelle de l'image est effectuée sans modifier son emplacement sur le toile.
-
CenterCanvas : L'image reste centrée sur la toile tout en étant mise à l'échelle.
-
CenterMouse : L'image est mise à l'échelle et se traduit pour s'aligner avec le emplacement actuel du pointeur de la souris sur le canevas.
-
MouseOffset : L'image est mis à l'échelle et traduit pour maintenir une position relative basée sur l'emplacement initial de la souris sur l'image.
L'exemple de code inclus génère des transformations de rotation et démontre la mise en œuvre des quatre modes de zoom. La sélection du mode zoom est gérée par un énumérateur nommé ZoomMode.
Aperçu visuel des fonctionnalités
Exemple de code
Le code suivant est fourni :
-
canvas : Un contrôle PictureBoxEx personnalisé (qui peut être modifié et étendu) ajouté au formulaire.
-
trkRotationAngle : TrackBar utilisé pour ajuster la rotation de l'image angle.
-
radZoom_CheckedChanged : Gestionnaire d'événements pour les boutons radio de sélection du mode de zoom.
Dans la méthode canvas_Paint, l'image du dessin est mise à l'échelle et pivotée à l'aide d'une série de Transformations matricielles. Les méthodes GetDrawingImageRect et GetDrawingImageCenterPoint sont utilisées pour calculer le rectangle et le point central corrects pour dessiner l'image mise à l'échelle. En appliquant des transformations dans un ordre spécifique, l'image peut être zoomée et traduite tout en conservant sa position sur le canevas ou par rapport à l'emplacement de la souris.
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!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn