我對視覺基礎很陌生,想知道如何將影像放入隨機圖片框中。我有 4 個圖片框和一張圖片。當您單擊“Jouer”按鈕時,我希望影像出現在計算機選擇的圖片框中。提前致謝。這是我到目前為止嘗試過的代碼:
Private Sub btnJouer_Click(sender As Object, e As EventArgs) Handles btnJouer.Click
T(0) = PictureBox1
T(1) = PictureBox2
T(2) = PictureBox3
T(3) = PictureBox4
lbl1.Text = lbl1.Text - 1
Dim rand As New Random()
For i = 0 To 3
Randomize()
Image = My.Resources.mario1
Trouver = Image.ToString
Trouver = rand.Next(0, T.Count)
Next
End Sub
uj5u.com熱心網友回復:
通過對四個圖片框進行一些硬編碼,只需使用 Case 陳述句即可完成
Dim rand As New Random()
Dim image = My.Resources.mario1
Dim i = rand.Next(4) ' 0, 1, 2, 3
Select Case i
Case 0
PictureBox1.Image = image
Case 1
PictureBox2.Image = image
Case 2
PictureBox3.Image = image
Case 3
PictureBox4.Image = image
End Select
Randomize 旨在與舊式 vb.net Rnd 函式一起使用,而 Random 類不需要它。
無需硬編碼四個圖片框,可以指定圖片框的數量和名稱中的前綴
Dim rand As New Random()
Dim image = My.Resources.mario1
Dim i = rand.Next(4) ' 0, 1, 2, 3
Dim numberOfPictureBoxes = 4
Dim pictureBoxPrefix = "PictureBox"
Dim myPictureBox = DirectCast(Me.Controls.Find($"{pictureBoxPrefix}{i 1}", True).Single(), PictureBox)
myPictureBox.Image = image
當然,你可能想在設定一個之前清除所有的PictureBoxes,所以它們都被清除了。您可以使用 Me.Controls,但圖片框必須在表單中,而不是在不同的控制元件中,例如面板或組框。如果是這種情況,請改用該容器:container.Controls.Cast(Of Control...
Dim myPictureBoxes = Me.Controls.Cast(Of Control).Where(Function(c) c.Name.Contains(pictureBoxPrefix)).Cast(Of PictureBox)()
For Each pb In myPictureBoxes
pb.Image = Nothing
Next
uj5u.com熱心網友回復:
通常最好宣告Random為類級別變數。然后,您每次單擊該按鈕時都會重復使用相同的實體。如果您使用區域變數并快速單擊按鈕,則Random可能使用基于系統時鐘的相同種子。
我還將圖片框陣列設為類級別變數,因此每次單擊按鈕時我都不必重新構建它。我在 中初始化了陣列,Form.Load所以我們已經創建了PictureBoxes 來填充它。
當您打開時Option Strict,您會發現嘗試用Strings進行算術運算是不明智的。同樣將 分配Integer給一個Text屬性(Textproperties are String)是不正確的。
我清除了所有圖片框,然后從Random實體中獲取了索引。我看到你意識到Next方法引數包含第一個引數,不包含第二個引數。
假設影像已經Resources正確分配到了,我們只需要將它分配到PictureBox陣列中隨機選擇的。
Private Rand As New Random()
Private PBs() As PictureBox
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
PBs = {PictureBox1, PictureBox2, PictureBox3}
End Sub
Private Sub btnJouer_Click(sender As Object, e As EventArgs) Handles Button2.Click
Label1.Text = (CInt(Label1.Text) - 1).ToString
For Each pb In PBs
pb.Image = Nothing
Next
Dim index = Rand.Next(0, PBs.Count)
PBs(index).Image = My.Resources.compiles_ship_it
End Sub
我更改了一些控制元件名稱和資源名稱以匹配我的測驗程式。我認為無論如何你都可以遵循它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/335611.html
標籤:网络
