用不同的色调颜色绘制列表中的每个字符串
本文关键字:字符串 列表 颜色 色调 绘制 | 更新日期: 2023-09-27 18:11:23
所以我有这样的代码:
编辑:// 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>
,如果是这样,如何通过它迭代?
Dictionary<string, Color>
听起来不错。
foreach (var entry in menuItems)
{
var text = entry.Key;
var color = entry.Value;
// ...
}
EDIT:对于评论中的问题,您可以在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;
}