2012-06-16 82 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