2016-08-23 53 views
0

我正在爲我目前正在開發的一個項目設計一個Breakout風格的遊戲。我剛剛完成了球和槳的實施,並且在實施遊戲磚時遇到了一些麻煩。我有一張我想放在遊戲中的磚頭照片。爲此,因爲我需要一個磚塊網格,所以我正在考慮聲明一個二維的圖片框數組(因此我可以指定磚塊的圖片),但我只能聲明數組。這是該行代碼,我有:如何聲明一個二維數組來存儲圖片(使用圖片框)

Dim Bricks(9, 9) As PictureBox 

所以,我的問題是:如何訪問每個圖片框,並指定磚的形象?有沒有更快的方法來做到這一點?謝謝,您的幫助將非常感謝。

+0

圖片[在Visual Basic ** **陣列(HTTPS:/ /msdn.microsoft.com/en-us/library/wak0wfyt.aspx)和[** For Each ... Next statement **](https://msdn.microsoft.com/zh-cn/library/5ebk1751。 aspx) –

回答

0

請注意,創建Bricks數組後,此數組仍爲空,即其所有元素均爲Nothing。您需要將表單上的PictureBox分配給此數組,除非您想反過來動態創建圖片框。

在第一種情況下做這樣的事情:

Bricks(0,0) = pictureBox1 
Bricks(0,1) = pictureBox2 
... 

或用循環

For x As Integer = 0 To 9 
    For y As Integer = 0 To 9 
     Bricks(x, y) = Controls("pictureBox" & (10 * x + y)) 
    Next 
Next 

或者(10 * y + x)取決於你選擇的順序。

在其他情況下(自動創建的圖片框)

For x As Integer = 0 To 9 
    For y As Integer = 0 To 9 
     'Create and initialize the PictureBox 
     Dim pb AS New PictureBox 
     pb.Size = New Size(30, 30) 
     pb.Location = New Point(20 + 30 * x, 20 + 30 * y) 
     pb.Image = myinitialImage 
     AddHandler pb.Click, AddressOf HandlePictureClick 

     'Assign the PictureBox to the array 
     Bricks(x, y) = pb 

     'Add the PictureBox to the Form 
     Controls.Add(pb) 
    Next 
Next 

現在你可以分配這樣

Bricks(x, y).Image = myPicture 
+0

@oliver非常感謝您的幫助。但是,我想知道我是否能夠將磚塊中心集中起來。目前,陣列出現在表單上,​​但第一塊磚位置(0,0)。所以,整個數組位於表單的左上角。我怎麼能夠改變這個,以便數組位於表單的中間? –

+0

請注意,數組只是內存中的一個結構,不在窗體上。它只是持有形式上的控件引用,以便於訪問磚塊。最簡單的方法是將磚放在面板上而不是直接放在窗體上。然後取下面板的所有錨點並將其放在表格的中心。當表格調整大小時,面板將自動停留在中心。 –