2017-02-20 45 views
-2

我有以下問題。我做了一個列表數組:從列表數組訪問列表元素

public List<float>[,] translatedtexture = new List<float>[8, 8]; 

這是一個二維數組,其中包含每個單元格中的列表,對嗎?

後來我這樣做:

translatedtexture[i,j] = new List<float>(){0.0F, 0.0F, 0.0F, 0.0F}; 

我在做什麼陣列中的細胞[I,J]基本上是建立浮動的列表。

後來我需要辦理這些彩車是這樣的:

newtexture.SetPixel(i, j, new Color(HERE:translatedtexture[i,j]list.r, HERE:translatedtexture[i,j]list.g, HERE:translatedtexture[i,j]list.b, HERE:translatedtexture[i,j]list.a); 

但問題是,我不知道語法從列表,它是在這個特定的細胞拉值。我已經嘗試了一切,瀏覽論壇,我無法找到答案。 任何幫助將不勝感激。

回答

1

你會訪問列表元素,就像這樣:

translatedtexture[i,j][0] //red 
translatedtexture[i,j][1] //green 
translatedtexture[i,j][2] //blue 
translatedtexture[i,j][3] //alpha 
2

您通常使用list[i]符號訪問第i個元素的列表。
這裏使用相同的語法:list[i]其中listtranslatedtexture[i,j]
因此,translatedtexture[i,j][k]將是translatedtexture[i,j]中的第k個列表項。

的代碼看起來就像這樣:

newtexture.SetPixel(i, j, new Color(translatedtexture[i,j][0], translatedtexture[i,j][1], translatedtexture[i,j][2], translatedtexture[i,j][3]); 

然而,這看起來有點大丑。更好地使用Color[,]或使用自定義結構。
或者至少做這種方式:

var colorRgba = translatedtexture[i,j]; 
newtexture.SetPixel(i, j, new Color(colorRgba[0], colorRgba[1], colorRgba[2], colorRgba[3]); 
0

嘗試這樣做:

public List<Color>[,] translatedtexture 

或者這樣,如果你想節省內存一點點(Color類有方法,等):

public class MyColor 
{ 
    public float A; 
    public float R; 
    public float G; 
    public float B; 
} 
public MyColor[,] translatedtexture 
+0

第二個示例應該是'public MyColor [,] translatedtexture',因爲您已將值列表作爲獨立屬性移動到類中。此外,您還需要添加透明度顏色。 – Enigmativity