Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何随机更改多个picturebox的图片_Vb.net - Fatal编程技术网

Vb.net 如何随机更改多个picturebox的图片

Vb.net 如何随机更改多个picturebox的图片,vb.net,Vb.net,我主要想知道如何优化这段代码。我试图创建一个程序,可以改变图片盒的照片,但要使用随机发生器。基本上,每张照片都有一定比例的机会出现在picturebox中,经过几次尝试后,对我来说唯一有效的就是这段难看且优化程度很差的代码,但如果我试图修复它,程序就会失败。我的代码生成一个从1到100的随机数,根据生成的数字,从六张照片中选择一张。它正在工作,但是它只改变了一个picturebox的图像,我有50多个要切换的图像(仍然是随机的)。我把它放在一个按钮里改变一切,花了我一个小时,我看到程序变得非常慢

我主要想知道如何优化这段代码。我试图创建一个程序,可以改变图片盒的照片,但要使用随机发生器。基本上,每张照片都有一定比例的机会出现在picturebox中,经过几次尝试后,对我来说唯一有效的就是这段难看且优化程度很差的代码,但如果我试图修复它,程序就会失败。我的代码生成一个从1到100的随机数,根据生成的数字,从六张照片中选择一张。它正在工作,但是它只改变了一个picturebox的图像,我有50多个要切换的图像(仍然是随机的)。我把它放在一个按钮里改变一切,花了我一个小时,我看到程序变得非常慢,所以这是不可能的。有没有办法一次只使用一个代码就全部更改它们,但随机保留所有50个PictureBox

这个想法是,在50个图片盒的末尾,随机填充了一些照片,这些照片可以重复,但有些照片出现的可能性比其他照片要小

我知道,这有点让人困惑,但即使有人能帮助我,也要马上谢谢你

我的代码:

randomvalue = random.Next(1, 101)
    If randomvalue = "1" Or randomvalue = "2" Or randomvalue = "3" Or randomvalue = "4" Or randomvalue = "5" Or randomvalue = "6" Or randomvalue = "7" Or randomvalue = "8" Or randomvalue = "9" Or randomvalue = "10" Or randomvalue = "11" Or randomvalue = "12" Or randomvalue = "13" Or randomvalue = "14" Or randomvalue = "15" Or randomvalue = "16" Or randomvalue = "17" Or randomvalue = "18" Or randomvalue = "19" Or randomvalue = "20" Or randomvalue = "21" Or randomvalue = "22" Or randomvalue = "23" Or randomvalue = "24" Or randomvalue = "25" Or randomvalue = "26" Or randomvalue = "27" Or randomvalue = "28" Or randomvalue = "29" Or randomvalue = "30" Or randomvalue = "31" Then
        btnOre1.Image = Image.FromFile("C:\Users\" & Environment.UserName & "\AppData\Local\imgsx\img1.png")
    End If

    If randomvalue = "32" Or randomvalue = "33" Or randomvalue = "34" Or randomvalue = "35" Or randomvalue = "37" Or randomvalue = "38" Or randomvalue = "39" Or randomvalue = "40" Or randomvalue = "41" Or randomvalue = "42" Or randomvalue = "43" Or randomvalue = "44" Or randomvalue = "45" Or randomvalue = "46" Or randomvalue = "47" Or randomvalue = "48" Or randomvalue = "49" Or randomvalue = "50" Or randomvalue = "51" Or randomvalue = "52" Or randomvalue = "53" Or randomvalue = "54" Or randomvalue = "55" Or randomvalue = "56" Or randomvalue = "57" Then
        btnOre1.Image = Image.FromFile("C:\Users\" & Environment.UserName & "\AppData\Local\imgsx\img2.png")
    End If

    If randomvalue = "58" Or randomvalue = "59" Or randomvalue = "60" Or "61" Or randomvalue = "62" Or randomvalue = "63" Or randomvalue = "64" Or randomvalue = "65" Or randomvalue = "66" Or randomvalue = "67" Or randomvalue = "68" Or randomvalue = "69" Or randomvalue = "70" Or randomvalue = "71" Or randomvalue = "72" Or randomvalue = "73" Or randomvalue = "74" Or randomvalue = "75" Or randomvalue = "76" Or randomvalue = "77" Then
        btnOre1.Image = Image.FromFile("C:\Users\" & Environment.UserName & "\AppData\Local\imgsx\img3.png")
    End If

    If randomvalue = "78" Or randomvalue = "79" Or "80" Or randomvalue = "81" Or randomvalue = "82" Or randomvalue = "83" Or randomvalue = "84" Or randomvalue = "85" Or randomvalue = "86" Or randomvalue = "87" Or randomvalue = "88" Or randomvalue = "89" Or randomvalue = "90" Then
        btnOre1.Image = Image.FromFile("C:\Users\" & Environment.UserName & "\AppData\Local\imgsx\img4.png")
    End If

    If randomvalue = "91" Or randomvalue = "92" Or randomvalue = "93" Or randomvalue = "94" Or randomvalue = "95" Or randomvalue = "96" Or randomvalue = "97" Or randomvalue = "98" Or randomvalue = "99" Or randomvalue = "100" Then
        btnOre1.Image = Image.FromFile("C:\Users\" & Environment.UserName & "\AppData\Local\imgsx\img5.png")
    End If

    If randomvalue = "36" Then
        btnOre1.Image = Image.FromFile("C:\Users\" & Environment.UserName & "\AppData\Local\imgsx\img6.png")
    End If

我不知道实际的数字是多少,因为我不想费心去计算,但是让我们假设你的六幅图片分别有10%,20%,10%,20%,10%和30%的使用几率。您可以使用
Select Case
轻松过滤随机数,例如

Select Case myRandom.Next(0, 100)
    Case Is < 10 '0-9
        'Use first image
    Case Is < 30 '10-29
        'Use second image
    Case Is < 40 '30-39
        'Use third image
    Case Is < 60 '40-59
        'Use fourth image
    Case Is < 70 '60-69
        'Use fifth image
    Case Else '70-99
        'Use sixth image
End Select

我不知道实际的数字是多少,因为我不想费心去计算,但是让我们假设你的六幅图片分别有10%,20%,10%,20%,10%和30%的使用几率。您可以使用
Select Case
轻松过滤随机数,例如

Select Case myRandom.Next(0, 100)
    Case Is < 10 '0-9
        'Use first image
    Case Is < 30 '10-29
        'Use second image
    Case Is < 40 '30-39
        'Use third image
    Case Is < 60 '40-59
        'Use fourth image
    Case Is < 70 '60-69
        'Use fifth image
    Case Else '70-99
        'Use sixth image
End Select


首先你应该了解的是字符串不是数字。接下来返回一个整数,您可以在条件中使用简单的比较运算符。比如>=and=1或者randomvalue我试着这样做:
如果randomvalue<32那么btnOre1.Image[…]如果randomvalue<58并且>31那么btnOre1.Image[…]
但是这只是给了我一个错误:预期表达式。@很高兴应该是
如果randomvalue<58并且randomvalue>31那么btnOre1.Image[…]
,虽然我认为大多数人会把它看作
如果randomvalue>31,randomvalue<58,那么就变成btnOre1.Image[…]
。谢谢安德鲁:)首先你应该了解的是字符串不是数字。接下来返回一个整数,您可以在条件中使用简单的比较运算符。比如>=and=1或者randomvalue我试着这样做:
如果randomvalue<32那么btnOre1.Image[…]如果randomvalue<58并且>31那么btnOre1.Image[…]
但是这只是给了我一个错误:预期表达式。@很高兴应该是
如果randomvalue<58并且randomvalue>31那么btnOre1.Image[…]
,尽管我认为大多数人会把它看作
如果randomvalue>31,randomvalue<58,那么就变成btnOre1.Image[…]
。谢谢安德鲁:)太完美了,伙计。有没有办法一次使用50个图片盒,但不创建模式?因为举例来说,我可以使用你的代码,并把它放在有10%几率的照片中,5个图片框将包含它。但是这5张图片是一样的,这正是我不想要的,因为尽管每次我使用select case时照片都会改变,但在这5张图片框中,照片总是一样的。这将是一个标准,我不想要它;(通常情况下,当你想经常做同样的事情时,你会将公共代码放在一个方法中,然后在每次需要该功能时调用该方法。例如,你可以编写一个方法,使用上面的代码来决定要使用哪个图像,然后在
图像
对象中返回该图像。但问题是,你不需要想要从同一个文件反复创建多个
图像
对象。每个文件只需要一个
图像
对象。我将创建一个更完整的示例,但在此之前,请确认:您有50个
图片框
和6个图像文件,并且您只希望这6个图像出现在所有
图片框
,但是每次出现的次数应该大致取决于你的具体权重,对吧?就是这样。非常感谢,我很高兴你能理解这一点,我无法解释。答案更新。注意获取你想要的文件夹路径的高级方法。太好了,伙计。有没有办法用50张图片做到这一点TureBox一次,但不创建模式?因为例如,我可以使用您的代码,并将其放在有10%几率的照片中,5个图片框将包含它。但5个图片框将具有相同的图片,这正是我不希望看到的,因为尽管每次使用select case时照片都会更改,但在这5个图片框中,photo永远都是一样的。这将是一个标准,我不想要它;(通常情况下,当你想经常做同样的事情时,你会将公共代码放在一个方法中,然后在每次需要该功能时调用该方法。例如,你可以编写一个方法,使用上面的代码来决定要使用哪个图像,然后在
图像
对象中返回该图像。但问题是,你不需要想要从同一个文件反复创建多个
图像
对象。每个文件只需要一个
图像
对象。我将创建一个更完整的示例,但在此之前,请确认:您有50个
图片框
和6个图像文件,并且您只希望这6个图像出现在所有
图片框
,但每次出现的次数应该大致取决于你的具体权重,对吧?就是这样。非常感谢,我很高兴你能理解这一点,我无法解释