我正在构建一个UWF程序,我想让它每x秒3个随机正方形改变颜色。
总共大约有40个正方形,每个正方形被命名为rec1 - rec42。所以我的想法是通过组合两个字符串随机选择一个正方形,和一个随机的整数。但现在我需要从字符串中设置字段这可能吗?我的理解/方法对吗?
这是我当前的方法
void animatedGraphics_Tick(object sender, object e) {
//List of color
String[] possibleColor = { "#FF443806", "#FF332E04", "#FF130F03" };
Random rnd = new Random();
//Loop for three square
for (int i = 0; i < 3; i++)
{
//generate pick squares to change
string square = ("rec" + rnd.Next(1, 43));
//Something like square.fill = possibleColor[rnd.Next(0,3)];
}
}
感谢编辑:这就是我最后使用的
void animatedGraphics_Tick(object sender, object e)
{
//List of color converted to from ARGB values
Color[] possibleColor = { Color.FromArgb(255, 65, 54 ,9),
Color.FromArgb(255, 19, 15, 3), Color.FromArgb(255, 51, 46, 3) };
Random rnd = new Random();
//Loop for three square
for (int i = 0; i < 3; i++)
{
//Use FindName to locate the shape
Rectangle square = (Rectangle) this.FindName("rec" + rnd.Next(1,42));
//Change the shape color
square.Fill = new SolidColorBrush(possibleColor[rnd.Next(0,3)]);
}
}
可能不是最好的方法,但你可以通过他的名字调用this.FindName()获得控件
然后填充方法将画笔作为参数,你可以使用SolidBrushColor。
最后,你可以使用ColorConverter.ConvertFromString()将十六进制转换为颜色
Color color = (Color)ColorConverter.ConvertFromString(possibleColor[rnd.Next(0,3)]);
SolidColorBrush myBrush = new SolidColorBrush(color);
Rectangle myRectangle = (Rectangle) this.FindName(square);
myRectangle.Fill(myBrush);