Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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
C# C64加载屏幕想法_C#_Loading - Fatal编程技术网

C# C64加载屏幕想法

C# C64加载屏幕想法,c#,loading,C#,Loading,我制作了一个加载屏幕(启动屏幕),就像旧的C64一样 我使用了一系列的图片框,只需使用计时器和案例陈述更改彩色图像 switch (a) { case 1: pictureBox1.Image = Properties.Resources.image1; pictureBox8.Image = Properties.Resources.image1; pictureBox10.Image = Properties.Resources.im

我制作了一个加载屏幕(启动屏幕),就像旧的C64一样

我使用了一系列的图片框,只需使用计时器和案例陈述更改彩色图像

switch (a)
{
    case 1: 
        pictureBox1.Image = Properties.Resources.image1;
        pictureBox8.Image = Properties.Resources.image1;
        pictureBox10.Image = Properties.Resources.image1;
        pictureBox2.Image = Properties.Resources.image1;
        pictureBox11.Image = Properties.Resources.image1;
        pictureBox9.Image = Properties.Resources.image1;
        break;
    case 2:
        pictureBox1.Image = Properties.Resources.image2;
        pictureBox8.Image = Properties.Resources.image2;
        pictureBox10.Image = Properties.Resources.image2;
        break;
    case 3:
        pictureBox1.Image = Properties.Resources.image3;
        pictureBox8.Image = Properties.Resources.image3;
        pictureBox10.Image = Properties.Resources.image3;
        break;
    case 4:
        pictureBox1.Image = Properties.Resources.image4;
        pictureBox8.Image = Properties.Resources.image4;
        break;
    case 5:
        pictureBox1.Image = Properties.Resources.image5;
        pictureBox8.Image = Properties.Resources.image5;
        break;
    case 6:
        pictureBox1.Image = Properties.Resources.image6;
        pictureBox8.Image = Properties.Resources.image6;
        break;
    case 7:
        pictureBox1.Image = Properties.Resources.image7;
        pictureBox8.Image = Properties.Resources.image7;
        break;
    case 8:
        pictureBox1.Image = Properties.Resources.image8;
        pictureBox8.Image = Properties.Resources.image8;
        break;
}

这看起来有点糟糕,我该如何改进我的代码呢?

你可以看一下。您可以创建一个表示单个阶段的类,该类将具有每个图片框的属性,并将这些属性的值设置为资源文件中的相关项


然后为每个加载阶段创建该对象的实例,将它们放入集合中,并编写一个迭代器来循环该集合

有两件事我需要改进:

  • 将图像存储在一个数组中,这样就不必每次都重复
    case X/imageX

  • 先处理一般事务,然后集中精力处理特殊情况

您可以将表单中的数组声明为“假”常量,因为它不会更改:

private readonly static Image[] myImages = new[] {
    Properties.Resources.image1,
    Properties.Resources.image2,
    Properties.Resources.image3,
    Properties.Resources.image4,
    Properties.Resources.image5,
    Properties.Resources.image6,
    Properties.Resources.image7,
    Properties.Resources.image8
}
然后在计时器处理器中使用以下代码:

Image image = myImages[a-1];

pictureBox1.Image = image;
pictureBox8.Image = image;

// special cases
if (a == 1)
{
    pictureBox2.Image = image;
    pictureBox11.Image = image;
    pictureBox9.Image = image;
}
if (a >= 1 && a <= 3)
{
    pictureBox10.Image = image;
}
Image=myImages[a-1];
pictureBox1.图像=图像;
pictureBox8.Image=图像;
//特例
如果(a==1)
{
pictureBox2.Image=图像;
PictureBx11.图像=图像;
pictureBox9.图像=图像;
}

如果(a>=1&&a,我将投票关闭此问题,因为此问题属于Stack Exchange网络中的另一个站点。查看我不知道还有其他站点抱歉。