有更快的方法吗?我有36张不同的图片,当图片发生变化时,我有一个跟踪图像的字符串(旋转),image1是rotation = 1,依此类推,我要做的就是使用36 if if this:
if (rotation == 1) //This is picture1
{
}
else if (rotation == 2) //This is picture2
{
}
一直到:
else if (rotation == 36) //This is picture36
{
}
有没有办法弄清楚它的旋转方式只有1或2行代码? 任何谁会在你问之前说检查,我已经检查过,我发现什么都没有帮助,如果你发现了什么,请在这里发布。
我的if语句内部仅用于更改图像。
感谢。
答案 0 :(得分:6)
使用数组
picture = img[i];
或者实际上名称索引后的图片(例如image01.jpg
,image02.jpg
等。)
阵列让我觉得它是最具扩展性和简洁性的解决方案。
答案 1 :(得分: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);
答案 2 :(得分: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...
}
答案 3 :(得分:1)
这是一个很长的镜头,我假设图像文件的名称将始终对应于旋转值,如下所示
轮换= 1 -----&gt; filename = image1.png
rotation = 2 -----&gt; filename = image2.png
如果是这样,你可以这样做
string fileName = "image" + rotation + ".png";
您可以使用此选项以您需要的方式选择或显示文件。
答案 4 :(得分:0)
转换声明。
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];
答案 5 :(得分:0)
最好的方法是使用int而不是String,然后使用switch case
。
Java 7允许在switch语句中使用Strings,我不知道它是否可以在C#中使用。