Cet article aborde le problème du zoom (mise à l'échelle) d'une image à partir de l'emplacement de la souris à l'aide de transformations dans l'événement Paint. Après avoir traduit l'origine du bitmap vers l'emplacement de la souris, l'image est mise à l'échelle et son origine est retraduite. Cependant, l'image "saute" et ne parvient pas à être mise à l'échelle à partir de l'origine déplacée lors de la traduction de l'emplacement de la souris.
Pour résoudre ce problème, nous mettons en œuvre les stratégies suivantes :
Pour une démonstration visuelle, notre exemple de code implémente quatre modes de zoom dans un contrôle PictureBoxEx personnalisé :
Le code fourni dans la réponse introduit le contrôle personnalisé PictureBoxEx qui hérite de PictureBox et inclut des fonctionnalités personnalisées. Il inclut également la variable canevas, qui représente le contrôle personnalisé ajouté au formulaire lors de l'initialisation. L'énumération ZoomMode est utilisée pour définir les différents modes de zoom.
Les gestionnaires d'événements pour les événements de souris et la barre de suivi, ainsi que la logique de peinture de base, gèrent les opérations de zoom et de rotation en fonction du mode de zoom sélectionné.
N'oubliez pas de modifier la chaîne imagePath par le chemin réel de votre fichier image avant d'exécuter le code.
Cette approche fournit une méthode plus efficace et plus stable pour zoomer et traduire des images à partir de l'emplacement de la souris. Cela réduit le risque d'artefacts visuels inattendus ou de problèmes de performances lors de la gestion de transformations complexes.
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!