Android API 中的许多 Canvas 方法需要定义一个 Paint 对象才能定义颜色。这样做的方法是,
Paint myPaintObject = new Paint();
myPaintObject.Color = Color.Red;
canvas.DrawRect(..., myPaintObject);
如果它看起来像这样就更好了
canvas.DrawRect(..., Colors.Red);
解决方案类可能看起来像这样......
public static class Colors
{
public static Paint Red { get { return GetColors(Color.Red); } }
public static Paint Black { get { return GetColors(Color.Black); } }
private static Paint GetColors(Color color)
{
Paint paint = new Paint ();
paint.Color = color;
return paint;
}
}
但是必须为每种可用的颜色创建吸气剂会很糟糕。有什么想法可以让这更容易吗?
编辑:LINQ 是一个很好的解决方案。根据@ChrisSinclair 关于使用 SolidColorBrush 画笔填充列表的评论
this.Colors = typeof(Color)
.GetProperties(System.Reflection.BindingFlags.Static |
System.Reflection.BindingFlags.Public)
.ToDictionary(p => p.Name,
p => new Paint()
{ Color = ((Color)p.GetValue(null, null)) });
调用时,看起来像,
canvas.DrawRect(..., Colors["Red"]);