2012-06-16 31 views
1

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

我正在使用Visual Studio 2010和一个VB.NET项目,但VB.NET或C#的建议将是伟大的。

在此先感谢!

+0

的可能重复(http://stackoverflow.com/questions/3396973/scrolling-picturebox-in-net) –

+0

我试过这个解决方案。它不适合我。 – user1208402

+1

为什么不呢?请解释。 –

回答

1

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

尝试操作面板上的调整大小事件,并调用事件当调整图片框:?在.NET滚动图片框]

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 
+0

这就是我正在寻找的。我不确定如何使用AutoScrollMinSize和AutoScrollPosition属性。谢谢。 – user1208402