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