如何在里面设置带有图片框的滚动面板?

时间:2012-06-16 07:23:48

标签: .net winforms scroll

我有一个面板,它固定在Windows窗体的顶部,左侧,右侧,底部。在该面板内是一个图片框。该图片框通过TrackBar控件(位于同一表单上的另一个面板上,其中“Dock”属性设置为Top)上下调整大小,并在每次调整大小时重新居中。图片框偶尔会变得太宽或太高而不能让面板包含它。如何将水平和垂直滚动条添加到面板以允许其在图片框中“平移”图像?我已经尝试使用autoscroll属性,但我似乎无法做任何事情,MSDN文档有点模糊,并列出了一些错误。我已经在堆栈中查看了之前的问题,但找不到适合我情况的任何内容。有什么想法吗?

我正在使用Visual Studio 2010和VB.NET项目,但VB.NET或C#建议会很棒。

提前致谢!

1 个答案:

答案 0 :(得分:1)

此类操作没有单一设置,因为当PictureBox维度小于Panel的客户端空间时,您希望PictureBox居中,但当PictureBox维度超过Panel的客户端空间大小时,您希望位置位于零点并让滚动条处理视图。

尝试处理面板的resize事件,并在调整PictureBox大小时调用该事件:

Private Sub TrackBar1_Scroll(sender As Object, e As EventArgs) Handles TrackBar1.Scroll
  PictureBox1.Size = New Size(64 * TrackBar1.Value, 64 * TrackBar1.Value)
  Panel1.AutoScrollMinSize = PictureBox1.Size
  Panel1_Resize(Panel1, EventArgs.Empty)
End Sub

Private Sub Panel1_Resize(sender As Object, e As EventArgs) Handles Panel1.Resize
  If PictureBox1.Width > Panel1.ClientSize.Width Then
    PictureBox1.Left = Panel1.AutoScrollPosition.X
  Else
    PictureBox1.Left = Panel1.ClientSize.Width / 2 - PictureBox1.Width / 2
  End If

  If PictureBox1.Height > Panel1.ClientSize.Height Then
    PictureBox1.Top = Panel1.AutoScrollPosition.Y
  Else
    PictureBox1.Top = Panel1.ClientSize.Height / 2 - PictureBox1.Height / 2
  End If
End Sub