Comment puis-je afficher des barres de défilement sur une commande PictureBox?
parfois, j'ai une picturebox disons 100x100. Mais l'image qu'il affichera est en fait 100x400.
je ne veux pas augmenter la taille de la picturebox lui-même. Au lieu de cela, je voudrais créer un scrollbar vertical (ou horizontal si nécessaire).
Je n'ai pas pu trouver de barre de défilement dans la boîte à outils, donc je suppose que je dois la coder. Mais, comment? Et je me demande toujours si je n'ai pas fait une erreur et n'ai pas vu le scrollbar dans la boîte à outils. Mes excuses alors :(
3 réponses
je suppose que vous ajouter des commandes de scrollbar séparées et synchroniser leur Scroll
événements avec le décalage à laquelle l'image dans le PictureBox
est dessiné, mais cela ressemble à du travail réel. Il ya une meilleure façon.
Ajouter un
Panel
contrôle de votre formulaire et définissez saAutoScroll
propriété à "vrai". ceci fera que le contrôle affichera automatiquement des barres de défilement quand il contient du contenu qui se trouve en dehors de son actuellement visibles limites. Le .net Framework s'occupera de tout pour vous sous les couvertures, sans que vous ayez à écrire une seule ligne de code.Glisser et de déposer votre
PictureBox
contrôle à l'intérieur de l'Panel
contrôle que vous venez d'ajouter.Panel
control détectera alors que l'un de ses contrôles enfant est plus grand que sa zone visible et affichera des barres de défilement, grâce auAutoScroll
propriété. Lorsque l'utilisateur déplace les barres de défilement, la partie de l'image dans votrePictureBox
qui est visible sera automatiquement ajusté. Magie.
(La raison pour laquelle vous devez utiliser un Panel
contrôle comme un conteneur est parce que PictureBox
n'hérite pas directement de ScrollableControl
classe de base, qui est ce qui fournit le AutoScroll
propriété.)
j'ai essayé et ça a bien fonctionné. Mais j'ai noté que si la picturebox est amarrée dans le Panneau, la picturebox est automatiquement réglée à la taille du panneau parent, et ne peut pas être réglée plus grande (du moins pas d'une façon que je pourrais trouver). Cela va à l'encontre du but de la technique. Donc, mettre la picturebox sur le panneau, mais ne pas ancrer, et cela fonctionnera parfaitement.
il n'y a pas de barre de défilement automatique sur une boîte d'image, mais vous pouvez ajouter le contrôle VScrollBar (et HScrollBar) au formulaire et gérer le défilement de l'image manuellement en le redessinant à un décalage différent chaque fois que l'événement de défilement est lancé.