Reputation: 4461
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?
Upvotes: 80
Views: 88745
Reputation: 6583
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;
Upvotes: 157
Reputation: 325
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);
Upvotes: 2
Reputation: 61
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!
Upvotes: 6
Reputation: 5959
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
Upvotes: 1
Reputation: 6353
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
Upvotes: 4