75 votes

Comment obtenir des barres de défilement sur Picturebox ?

J'ai PictureBox picture .

J'utilise :

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

Disons qu'il y a deux entiers maxWidth y maxHeigth .
Je veux ajouter une barre de défilement verticale/horizontale à l'écran de mon ordinateur. picture lorsque sa taille dépasse maxWidth et/ou maxHeight . Comment puis-je le faire ?

147voto

binil Points 3504

Vous pouvez facilement le faire avec un Panel Contrôle

Insérez un panneau dans votre formulaire, par exemple panel1, et définissez les paramètres suivants

panel1.AutoScroll = true;

insérer un PictureBox à la Panel dire "photo" et mettre

picture.SizeMode = PictureBoxSizeMode.AutoSize;

et définir l'image

picture.Image = bmp;

J'espère que cela vous aidera

3 votes

Il s'agit d'une réponse intéressante, car si vous configurez le panneau pour qu'il soit ancré au formulaire, le panneau s'agrandira au fur et à mesure que le formulaire s'agrandira, affichant et masquant les barres de défilement si nécessaire.

17 votes

J'ajouterais à la réponse de binil, la chose suivante : l'ancre de la picturebox ne doit pas être placée à droite ou en bas. En plaçant l'ancre à droite, on empêche l'affichage de la barre de défilement horizontale. Si elle est placée en bas, la barre de défilement verticale ne s'affiche pas.

16 votes

Mike, vérifie que le dock pictureBox doit être défini sur None. J'avais le mien réglé sur Fill et je n'ai pas vu de barres de défilement, mais quand je l'ai changé en none, les barres de défilement sont apparues.

4voto

James King Points 3620

Voici un projet où un gars a construit un ImagePanel contrôle utilisateur que vous pouvez déposer sur un formulaire ; il vous offre des barres de défilement et des possibilités de zoom.

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

3voto

smhiker Points 31

J'ai réussi à le faire fonctionner en plaçant également une boîte à images à l'intérieur d'un panneau de contrôle, 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 (de cette façon, lorsque l'utilisateur redimensionne le formulaire, le panneau le fait aussi). Pour la Picturebox, j'ai défini sa propriété Dock sur None, et son SizeMode sur Autosize (de sorte qu'elle se redimensionne également lorsque le Panel et le formulaire se redimensionnent). Cela a fonctionné à merveille, la boîte à images a des barres de défilement et lorsque l'utilisateur redimensionne le formulaire, tout est toujours placé correctement !

1voto

ToyAuthor X Points 235

Ça marche pour moi.

PictureBox picture = new PictureBox();
picture.Image=Image.FromFile("image.bmp");
picture.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
Panel panel = new Panel();
panel.Size=new Size(800,600);
panel.Location=new Point(0,0);
panel.AutoScroll=true;
panel.Controls.Add(picture);
this.Controls.Add(panel);

0voto

Smith Points 1711

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X