是否可以在没有水平滚动条的情况下在PictureBox中拉伸图片,在WinForms中只展示垂直滚动条?

时间:2017-03-17 12:26:26

标签: c# .net winforms scrollbar picturebox

我在面板中有PictureBox图片框Dock = DockStyle.Fill

当我将图片分配到PictureBox时,图片会拉伸水平以适应可用空间,并需要一个垂直滚动条来滚动图像。我不需要水平滚动条

请不要将此问题视为重复..我已经明确提到我只需要垂直滚动条以及面板的运行时调整大小选项。

注意:面板大小可能会在运行时更改(因此,显然也是PictureBox大小)。

请帮帮我。

1 个答案:

答案 0 :(得分:1)

此解决方案使用一个简单的resize方法,只要它应该更新它的大小就可以调用。

先决条件:

  • 关闭PictureBox的停靠

  • 将Panel的AutoScroll属性设置为true

调整大小的方法:

private void panel1_Resize(object sender, EventArgs e)
{
    ResizePb();
}

private void ResizePb()
{
    //Make the pciturebox as wide as the panel, keep in mind the scrollbars
    pictureBox1.Width = panel1.Width - SystemInformation.VerticalScrollBarWidth - 5; 
    //Calculate the aspect ratio of the image based on its new width
    var aspect = (double)panel1.Width / pictureBox1.Image.Width;
    //Set height according to aspect ratio
    var height = Convert.ToInt32(aspect * pictureBox1.Image.Height);
    pictureBox1.Height = height;
}