我是一名初学者,所以让我轻松一点。 当我按下按钮时,我想按名称(0-20)的顺序显示图像集。我设法用一个随机数(0-20),但如果我想减少从20到19到18等等,我该怎么做?
public partial class Form1 : Form
{
//Random r = new Random();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string path = @"C:\Users\Ole-Jeger\Documents\Visual Studio 2013\Projects\Test_Spill1\Test_Spill1\Pictures\";
//Heathbar.Image = Image.FromFile(path + r.Next(20).ToString() + ".png");
Heathbar.Image = Image.FromFile(path + /*what to put here?*/)
}
}
答案 0 :(得分:3)
定义一个包含当前数字的类成员字段ImageNumber
:
public partial class Form1 : Form
{
private const string path =
@"C:\Users\Ole-Jeger\Documents\Visual Studio 2013\Projects\Test_Spill1\Test_Spill1\Pictures\";
private const int INT_ImageCount = 20;
private int ImageNumber = INT_ImageCount;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (ImageNumber > 0)
{
ImageNumber -= 1;
// How about disabling the button?
if (ImageNumber == 0)
{
button1.Enabled = false;
}
}
/*else
{
// Bad boys, Bad boys,
// whatcha gonna do?
// whatcha gonna do?
// whatcha gonna do when the number is nil?
// Note: if you disabled the button, this shoudln't be a problem
}*/
Heathbar.Image = Image.FromFile(path + ImageNumber.ToString() + ".png");
}
}
此代码将从19.png
开始,然后转到18.png
,17.png
,依此类推,直至达到0.png
。
上面的代码不会输出20.png
,因为它会在使用前减小该值。所以第一次迭代是20
,然后它减少到19
,然后使用它。
我使用了一个名为INT_ImageCount
的常量设置为20
,这反映了从0.png
到19.png
有20个图像的事实。根据需要调整值。
注意:如果您没有0.png
图片,则可能需要在使用时将1
添加到变量中:
Heathbar.Image = Image.FromFile(path + (ImageNumber + 1).ToString() + ".png");
这样做,它会从20.png
转到1.png
。您也可以将验证更改为:
if (ImageNumber == 1)
这将导致代码从19.png
转到1.png
(更改合约以适应此情况,但常量不再代表图像数量,而是最后一个图像的值......在这种情况下你可能想称它为INT_MaxImage
。
兴趣点:
在现代CPU中使用int
实际上更快,因为它可以是半个字的单词。在此方案中无需使用byte
。
我已将路径设为常量,实际上您可能希望将其设为readonly
字段,从可执行文件的路径获取其值(或从配置或类似源中读取它) 。但这是另一个故事,并将被告知另一个时间。
Random.Next(n)
会提供一个可以归入[0, n)
的号码,我的意思是它不包含n
。换句话说:结果可以是0,但不是n
。因此Random.Next(20)
永远不会返回20
。
如上所述,默认情况下,-=
对一个字节使用unchecked
。因此它从0到255.使用checked{num -= 1}
将导致它抛出异常。这是因为byte不能存储负值。
您可能有兴趣预先加载图像并将它们放在一个数组中,这样它可以更快地切换它们,同时避免加载相同的图像两次。