WPF fournit une variété de méthodes pour créer une visionneuse d'images de base afin d'obtenir des fonctions telles que le panoramique de l'image, le zoom, l'affichage en superposition et l'affichage de l'image originale. Bien que les contrôles intégrés tels que ViewBox
et ImageBrush
puissent vous aider avec ces fonctions, cet article vous guidera dans l'implémentation de code personnalisé pour mieux comprendre son fonctionnement.
Pour gérer le panoramique et le zoom, nous allons créer un contrôle personnalisé appelé ZoomBorder
. Cette classe résume la logique de transformation d’image.
ZoomBorder
utilise UIElement
comme élément enfant et applique des transformations pour réaliser la mise à l'échelle et le panoramique. Le code définit des gestionnaires d'événements pour la molette de la souris, le glissement du bouton gauche et le mouvement de la souris pour implémenter ces fonctions.
Dans la fenêtre MainWindow
, vous pouvez utiliser ZoomBorder
pour afficher et manipuler des images. L'attribut ZoomBorder
de Child
doit être défini sur l'image que vous souhaitez afficher.
child_MouseWheel
calcule le facteur de mise à l'échelle en fonction de l'incrément de la molette de la souris et l'applique au ScaleTransform
de l'image. Il ajuste également le TranslateTransform
pour maintenir la position de traduction par rapport au pointeur de la souris.
child_MouseLeftButtonDown
et child_MouseMove
gèrent le panoramique. Lorsque l'utilisateur clique et fait glisser le bouton gauche, le TranslateTransform
de l'image est mis à jour pour déplacer l'image en conséquence.
Pour inclure un bouton de réinitialisation, vous ajoutez un bouton à MainWindow
et gérez son événement de clic pour appeler la méthode ZoomBorder
de Reset
.
En implémentant la personnalisation ZoomBorder
dans WPF, vous pouvez créer une visionneuse d'images simple mais efficace avec des fonctionnalités de panoramique et de zoom. Cette approche offre une plus grande flexibilité et un plus grand contrôle sur l'expérience utilisateur que l'utilisation de contrôles prédéfinis tels que ViewBox
.
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!