How can I get scrollbars on Picturebox
Asked Answered
T

5

78

I have PictureBox picture.

I use:

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

Let's say there are two integers maxWidth and maxHeigth.
I want to add vertical/horizontal scrollbar to picture when its size exceeds maxWidth and/or maxHeight. How can I do that?

Twirl answered 17/1, 2011 at 4:58 Comment(0)
G
153

You can easily do it with a Panel Control

Insert a panel to your form, say panel1 and set

panel1.AutoScroll = true;

insert a PictureBox to the Panel, say picture and set

picture.SizeMode = PictureBoxSizeMode.AutoSize;

and set the Image

picture.Image = bmp;
Grallatorial answered 17/1, 2011 at 5:9 Comment(7)
This is a nice answer because if you set the panel to be anchored to the form, the panel will expand as the form expands, showing and hiding the scrollbars as necessary.Potted
I would add to binil's answer, the following: the picturebox has to have the anchor not set to right or bottom. Setting the anchor to right prevents the display of the horizontal scrollbar. Setting it to bottom prevents the display of the vertical scrollbar.Schatz
Mike, verify that pictureBox dock should be set to None. I had mine set to Fill and did not see any scrollbars but when I changed it to none the scrollbars appeared.Bribery
I've the same problem, the pictureBox dock is set to None but If I set the SizeMode to AutoSize no scrollbars are shownDivaricate
Yep same issue here, you cannot set SizeMode to AutoSize in the later versions. Setting it to Normal works as expected.Cathycathyleen
I also set the panel1's AutoSize to false because it became as big as my screen.Daryldaryle
Resuming ('cause i've done a lot of experiments), and this worked for me: Panel: Autosrcoll: true, Dock: fill Picturebox: Dock: none; Anchor: Top, Left; SizeMode: AutoSizeNates
S
5

I got it to work by also putting a picturebox inside a panel control, I set the Panel's AutoScroll property to true, but I also set the Panel's Autosize property to True, and the Panel's Dock property to Fill (that way when the user resizes the form - so will the Panel). For the Picturebox, I set it's Dock property to None, and the SizeMode to Autosize (so it resizes also when the Panel and form Resizes. It worked like a charm, the Picturebox has Scrollbars and when the user resizes the form - everything is still placed correctly!

Schnitzel answered 21/6, 2016 at 19:56 Comment(1)
Thanks, the only way it worked for me (VS2017) was PictureBox: Dock = None and SizeMode = AutoSize. Thanks again!Congratulant
P
4

Here's a project where a guy built an ImagePanel user control that you can drop onto a form; it gives you scrollbars and zoom capability.

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

Potted answered 17/1, 2011 at 5:24 Comment(0)
B
2

It works to me.

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);
Banwell answered 13/5, 2020 at 2:58 Comment(0)
I
1

Another suggestion is to put the picturebox inside a FlowlayoutPanel .

Set the Auto scroll of the FlowlayoutPanel to true and set the picture size mode to normal

Using a FlowlayoutPanel makes sure the image is always at 0,0 in the panel

Ingrowing answered 13/4, 2016 at 13:31 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.