2015-09-05 78 views
-1

所以我有這樣的代碼:繪製每個字符串列表用不同色調的顏色

編輯:

// Variables 
private Dictionary<string, Color> menuEntries; 
private Color fontColour; 

// LoadContent() 
fontColour = Color.White; // By default 
menuEntries = new Dictionary<string, Color>(); 
menuEntries["SinglePlayer"] = Color.White; 
menuEntries["MultiPlayer"] = Color.Gray; 
menuEntries["Achievements"] = Color.White; 
menuEntries["Options"] = Color.White; 
menuEntries["Quit Game"] = Color.White; 

// Draw() 
/*for (int i = 0; i < menuItems.Count; i++) 
{ 
    Vector2 fontOrigin = Game.gameFontLarge.MeasureString(menuItems[i])/2; 
    spriteBatch.DrawString(Game.gameFontLarge, menuItems[i], new Vector2(ScreenManager.Instance.Dimensions.X/2, (ScreenManager.Instance.Dimensions.Y/2) + 48 * i), fontColour, 0.0f, fontOrigin, 1.0f, SpriteEffects.None, 0.0f); 
}*/ 

foreach (var entry in menuEntries) 
{ 
    var text = entry.Key; 
    var color = entry.Value; 
    Vector2 fontOrigin = Game.gameFontLarge.MeasureString(entry.Key)/2; 
    spriteBatch.DrawString(Game.gameFontLarge, entry.Key, new Vector2(ScreenManager.Instance.Dimensions.X/2, (ScreenManager.Instance.Dimensions.Y/2)), entry.Value, 0.0f, fontOrigin, 1.0f, SpriteEffects.None, 0.0f); 
} 

那麼如何改變fontColour值(默認情況下是Color.White)的東西像Color.Gray?如果我將其中一個字符串「變灰」並覺得它被禁用?所以基本上我需要一個解決方案,以便如何繪製不同顏色的每個字符串我指定在我的代碼中的某個地方?我應該使用Dictionary<string, Color>而不是List<string>,如果是,如何遍歷它?

回答

1

Dictionary<string, Color>聽起來不錯。

foreach (var entry in menuItems) 
{ 
    var text = entry.Key; 
    var color = entry.Value; 
    // ... 
} 

編輯:至於評論的問題,您可以在foreach外面定義變量並使用它裏面,如:

var y = ScreenManager.Instance.Dimensions.Y/2; 
foreach (var entry in menuEntries) 
{ 
    var text = entry.Key; 
    var color = entry.Value; 
    Vector2 fontOrigin = Game.gameFontLarge.MeasureString(entry.Key)/2; 
    spriteBatch.DrawString(Game.gameFontLarge, entry.Key, new Vector2(ScreenManager.Instance.Dimensions.X/2, y), entry.Value, 0.0f, fontOrigin, 1.0f, SpriteEffects.None, 0.0f); 
    y += 48; 
} 
+0

你能在我的代碼看起來上面,因爲它是在這一刻。它將每個字符串繪製在相同的座標上,因爲我按照您的建議使用了一個'foreach'循環,而不是我已經擁有的'for'循環。請看'Draw()'方法中的註釋掉循環。之前,每個字符串將被繪製在其前一個字符下方48個像素處,但現在它們處於相同的座標上。有什麼建議麼? – jacksparrow

+0

查看編輯答案。 –

+0

我沒有更多的問題,這正是我需要的! – jacksparrow

相關問題