如何在 Picturebox 上获得滚动条

Posted

技术标签:

【中文标题】如何在 Picturebox 上获得滚动条【英文标题】:How can I get scrollbars on Picturebox 【发布时间】:2011-06-10 06:09:07 【问题描述】:

我有PictureBox picture

我用:

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

假设有两个整数 maxWidthmaxHeigth。 我想在picture 的大小超过maxWidth 和/或maxHeight 时添加垂直/水平滚动条。我该怎么做?

【问题讨论】:

【参考方案1】:

您可以使用 Panel 控件轻松完成此操作

在表单中插入一个面板,比如 panel1 并设置

panel1.AutoScroll = true;

Panel 中插入PictureBox,说出图片并设置

picture.SizeMode = PictureBoxSizeMode.AutoSize;

并设置图像

picture.Image = bmp;

希望对你有帮助

【讨论】:

这是一个很好的答案,因为如果您将面板设置为锚定到表单,面板将随着表单的展开而展开,并根据需要显示和隐藏滚动条。 我会在 binil 的回答中添加以下内容:图片框的锚点必须不设置为右侧或底部。将锚点设置为右侧可防止显示水平滚动条。将其设置为底部可防止显示垂直滚动条。 迈克,确认图片框停靠栏应设置为无。我将我的设置为 Fill 并且没有看到任何滚动条,但是当我将其更改为 none 时,滚动条出现了。 我也有同样的问题,pictureBox 底座设置为 None 但如果我将 SizeMode 设置为 AutoSize 则不显示滚动条 是的,同样的问题,您不能在以后的版本中将 SizeMode 设置为 AutoSize。将其设置为正常工作正常。【参考方案2】:

这是一个项目,其中一个人构建了一个 ImagePanel 用户控件,您可以将其拖放到表单上;它为您提供滚动条和缩放功能。

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

【讨论】:

【参考方案3】:

我还通过在面板控件中放置一个图片框来使其工作,我将面板的 AutoScroll 属性设置为 true,但我还将面板的 Autosize 属性设置为 True,并且将面板的 Dock 属性设置为 Fill(当用户调整表单的大小 - 面板也会)。对于 Picturebox,我将其 Dock 属性设置为 None,将 SizeMode 设置为 Autosize(因此当 Panel 和 form 调整大小时它也会调整大小。它就像一个魅力,Picturebox 有滚动条,当用户调整表单大小时 - 一切都还在正确放置!

【讨论】:

谢谢,它对我有用的唯一方法 (VS2017) 是 PictureBox:Dock = None 和 SizeMode = AutoSize。再次感谢!【参考方案4】:

对我有用。

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);

【讨论】:

【参考方案5】:

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

设置FlowlayoutPanel的Auto scroll为true,设置图片大小模式为normal

使用 FlowlayoutPanel 确保图像在面板中始终位于 0,0

【讨论】:

以上是关于如何在 Picturebox 上获得滚动条的主要内容,如果未能解决你的问题,请参考以下文章

picturebox增加滚动条

C#:如何在 SplitContainer 面板中包含的 PictureBox 中添加两个滚动条

C# picturebox显示滚动条问题求解

C# Winform 滚动条的问题

C# 滚动条问题

关于vb中 picturebox和滚动条