web-dev-qa-db-fra.com

Comment puis-je obtenir des barres de défilement sur Picturebox

J'ai PictureBox picture.

J'utilise:

picture.Size = bmp.Size;
picture.Image = bmp;

Supposons qu'il existe deux entiers maxWidth et maxHeigth.
Je souhaite ajouter une barre de défilement verticale/horizontale à picture lorsque sa taille dépasse maxWidth et/ou maxHeight. Comment puis je faire ça?

57
Ichibann

Vous pouvez facilement le faire avec un Panel Control

Insérez un panneau dans votre formulaire, par exemple panneau1 et définissez

panel1.AutoScroll = true;

insérez une PictureBox à la Panel, dites une image et définissez

picture.SizeMode = PictureBoxSizeMode.AutoSize;

et définir l'image

picture.Image = bmp;

j'espère que cela t'aides

127
Binil

Voici un projet dans lequel un utilisateur a créé un contrôle utilisateur ImagePanel que vous pouvez déposer dans un formulaire; il vous donne des barres de défilement et une capacité de zoom.

http://www.codeproject.com/KB/graphics/YLScsImagePanel.aspx

4
James King

Je l'ai mis au travail en plaçant également une image dans le contrôle d'un panneau, j'ai défini la propriété AutoScroll du panneau sur true, mais j'ai également défini la propriété Autosize du panneau sur True et la propriété Dock du panneau sur Fill (ainsi lorsque l'utilisateur redimensionne forme - le groupe le fera également). Pour Picturebox, j’ai défini la propriété Dock sur None et le SizeMode sur Autosize (afin qu’il soit redimensionné également lorsque le panneau et le formulaire sont redimensionnés. Cela a fonctionné comme un charme, la Picturebox a des barres de défilement et lorsque l’utilisateur redimensionne le formulaire - tout est toujours placé correctement!

1
smhiker

Une autre suggestion consiste à placer la boîte à images dans un FlowlayoutPanel. 

Définissez le défilement automatique du FlowlayoutPanel sur true et définissez le mode de taille d'image sur normal

L'utilisation d'un FlowlayoutPanel permet de s'assurer que l'image est toujours à 0,0 dans le panneau

0
Smith