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 :(

10
demandé sur Cody Gray 2011-01-13 07:22:33

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.

  1. Ajouter un Panel contrôle de votre formulaire et définissez sa AutoScroll 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.

  2. 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 au AutoScroll propriété. Lorsque l'utilisateur déplace les barres de défilement, la partie de l'image dans votre PictureBox 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é.)

19
répondu Cody Gray 2011-01-13 07:01:02

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.

3
répondu Gundark 2012-02-14 23:38:06

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é.

2
répondu xpda 2011-01-13 04:27:20