如何在Picturebox上获取滚动条


69

我有PictureBox picture

我用:

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

假设有两个整数maxWidthmaxHeigth
我想picture在其大小超过maxWidth和/或时添加垂直/水平滚动条maxHeight。我怎样才能做到这一点?

Answers:


137

您可以轻松地使用PanelControl

在面板中插入一个面板,例如panel1并设置

panel1.AutoScroll = true;

插入一PictureBoxPanel,说画面和设定

picture.SizeMode = PictureBoxSizeMode.AutoSize;

并设置图像

picture.Image = bmp;

希望这可以帮助


3
这是一个很好的答案,因为如果您将面板设置为锚定在表单上,​​则面板将随着表单的扩展而扩展,并根据需要显示和隐藏滚动条。
詹姆斯·金

15
我将在binil的答案中添加以下内容:图片框必须具有未设置为右侧或底部的锚点。将锚点设置为右侧可防止显示水平滚动条。将其设置为底部可防止显示垂直滚动条。
CristisS

13
迈克,请确认pictureBox基座应设置为“无”。我将我的设置为“填充”,但没有看到任何滚动条,但是当我将其更改为“无”时,会出现滚动条。
morpheus

2
我遇到了同样的问题,pictureBox停靠设置为“无”,但是如果我将SizeMode设置为“自动调整大小”,则不会显示滚动条
Martina

是这里同样的问题,您不能在更高版本中将SizeMode设置为AutoSize。将其设置为“正常”将按预期工作。
高丽


3

我还通过在面板控件中放置一个图片框来使其工作,将面板的AutoScroll属性设置为true,但也将面板的Autosize属性设置为True,并将面板的Dock属性设置为Fill(这样,当用户调整大小时表格-小组也是如此)。对于Picturebox,我将其Dock属性设置为None,将SizeMode设置为Autosize(因此,当Panel和Form调整大小时,它也会重新调整大小。它像一个超级按钮一样工作,Picturebox具有滚动条,并且当​​用户调整表格大小时-一切仍然是放置正确!


谢谢,它对我有用的唯一方法(VS2017)是PictureBox:Dock =无,SizeMode = AutoSize。再次感谢!
RickC

0

另一个建议是将图片框放在FlowlayoutPanel中。

将FlowlayoutPanel的“自动滚动”设置为true,并将图片尺寸模式设置为“正常”

使用FlowlayoutPanel确保面板中的图像始终为0,0


0

它对我有用。

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);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.