Maison > développement back-end > C++ > Comment zoomer et traduire correctement une image à partir de l'emplacement de la souris ?

Comment zoomer et traduire correctement une image à partir de l'emplacement de la souris ?

DDD
Libérer: 2025-01-01 04:18:10
original
205 Les gens l'ont consulté

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

How to Correctly Zoom and Translate an Image from the Mouse Location?

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal