3

有没有更快的方法来做到这一点?我有 36 张不同的图片,当图片发生变化时,我有一个跟踪图像(旋转)的字符串,image1 是旋转 = 1 等等,我要做的是使用 36 个这样的 if 语句:

if (rotation == 1) //This is picture1
{

}
else if (rotation == 2) //This is picture2
{

}

一直到:

else if (rotation == 36) //This is picture36
{

}

有没有什么办法可以用 1 或 2 行代码来计算它的旋转?任何在你问之前会说检查的人,我已经检查过了,我发现没有任何帮助,如果你发现了什么,请在此处发布。

我的 if 语句内部仅用于更改图像。

谢谢。

4

6 回答 6

5

要么使用数组

picture = img[i];

或者也许实际上在索引之后命名image01.jpg图像(例如,image02.jpg等)

数组给我的印象是最可扩展和最简洁的解决方案。

于 2013-02-07T13:50:52.033 回答
2

例如,如果您打印旋转,请在您的内部说。

if (rotation == 1) //This is picture1
{
   System.out.println(1);
}
else if (rotation == 2) //This is picture2
{
    System.out.println(2);
}


else if(rotation==36)
{
    System.out.println(36);
}

您可以将整个代码更改为一行。

System.out.println(rotation);
于 2013-02-07T13:58:08.327 回答
1

WhateverYourPictureClassIs您可以使用、 或IDictionary<int,WhateverYourPictureClassIs>、 或switch语句的数组。

比如图片信息是一个字符串:

string[] pictures = {
  "you might have a blank entry here if the first number is 1 instead of 0",
  "picture1",
  "picture2",
  "picture3",
  "picture4",
  // ...and so on...
};

然后查找图片是

if (picture >= 0 && picture < pictures.Length) { // The 0 might be 1 in your case
    pictureInfo = pictures[picture];
}

或者

IDictionary<int,string> pictures = new Dictionary<int,string>();
pictures.Add(1, "picture1");
// ...and so on...

抬头一看,大同小异。

或者

switch (picture) {
    case 1: pictureInfo = "picture1"; break;
    case 2: pictureInfo = "picture2"; break;
    // ...and so on...
}
于 2013-02-07T13:48:21.450 回答
1

这是一个长镜头,我假设图像文件的名称将始终对应于旋转值,如下所示

旋转 = 1 -----> 文件
名 = image1.png 旋转 = 2 -----> 文件名 = image2.png

如果是这样,你可以这样做

string fileName = "image" + rotation + ".png";

您可以使用它以您需要的方式选择或显示您的文件。

于 2013-02-07T13:56:35.973 回答
0

一个 switch 语句。

http://www.dotnetperls.com/if-switch-performance

switch(number)
{
  case 1:

    break;
}

或者,如果你有一个List<T>- 在这种情况下T是你的照片,你可以做

List<T> pictures = new List<T>();
T picture = pictures[rotation];
于 2013-02-07T13:49:43.320 回答
0

最好的方法是使用 int 而不是 String,然后您可以使用switch case.

Java 7 允许在 switch 语句中使用字符串,我不知道在 C# 中是否可能。

于 2013-02-07T13:49:45.130 回答