如何在 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;
假设有两个整数 maxWidth
和 maxHeigth
。
我想在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 上获得滚动条的主要内容,如果未能解决你的问题,请参考以下文章