1

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

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

提前致谢!

4

1 回答 1

2

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

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

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
于 2012-06-16T16:57:37.483 回答