Итак, я пытаюсь сделать 8 кругов, которые имеют разные цвета заливки, и все имеют разные скорости мигания. До сих пор я мог заставить их моргать с разной скоростью, но у меня возникают проблемы с тем, чтобы у них были разные цвета. Мой код до сих пор:WPF Изменение цвета заливки эллипса
private void Appear(Ellipse element, double duration, Brush colour)
{
element.Fill = colour;
DoubleAnimation db = new DoubleAnimation();
db.From = 0.0;
db.To = 1.0;
db.Duration = new Duration(TimeSpan.FromSeconds(duration));
db.RepeatBehavior = RepeatBehavior.Forever;
element.BeginAnimation(Ellipse.OpacityProperty, db);
}
private Brush SetEllipseColour(Ellipse element)
{
Random rnd = new Random();
int red = rnd.Next(0, 255);
int green = rnd.Next(0, 255);
int blue = rnd.Next(0, 255);
Brush fillColour = new SolidColorBrush(Color.FromRgb((byte)red, (byte)green, (byte)blue));
return fillColour;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
List<Ellipse> elements = new List<Ellipse>();
elements.Add(Circle1);
elements.Add(Circle2);
elements.Add(Circle3);
elements.Add(Circle4);
elements.Add(Circle5);
elements.Add(Circle6);
elements.Add(Circle7);
elements.Add(Circle8);
Random rnd = new Random();
foreach (Ellipse element in elements)
{
int r = rnd.Next(1, 10);
double duration = (Double)r/10;
Appear(element, duration, SetEllipseColour(element));
}
}
И мой WPF:
<Canvas Margin="10">
<Ellipse
x:Name="Circle1"
Fill="Black"
Height="100"
Width="100"/>
<Ellipse
x:Name="Circle2"
Fill="Black"
Height="100"
Width="100"
Margin="120,0,0,0"/>
<Ellipse
x:Name="Circle3"
Fill="Black"
Height="100"
Width="100"
Margin="240,0,0,0"/>
<Ellipse
x:Name="Circle4"
Fill="Black"
Height="100"
Width="100"
Margin="360,0,0,0"/>
<Ellipse
x:Name="Circle5"
Fill="Black"
Height="100"
Width="100"
Margin="0,120,0,0"/>
<Ellipse
x:Name="Circle6"
Fill="Black"
Height="100"
Width="100"
Margin="120,120,0,0"/>
<Ellipse
x:Name="Circle7"
Fill="Black"
Height="100"
Width="100"
Margin="240,120,0,0"/>
<Ellipse
x:Name="Circle8"
Fill="Black"
Height="100"
Width="100"
Margin="360,120,0,0"/>
</Canvas>
<Button x:Name="button1" Content="Start" Width="80" Height="20" Margin="0,200,0,0" Click="button1_Click"/>
Примечание: Я знаю, что могу сжать/изменить мой код, чтобы сделать это аккуратнее и лучше, но сейчас я просто хочу, чтобы получить цвета работы.
Так что в настоящее время код меняет цвет заливки все Элементы эллипса, но я хочу изменить его, чтобы просто повлиять на каждый круг. Как мне это сделать?
Edit: Для тех, кто запутался, что Im пытается спросить, я не знаю, как индивидуально изменить цвет заливки каждого круга.
_ "У меня возникли проблемы с созданием их все имеют разные цвета" _ - пожалуйста, более конкретно. Какая проблема, _exactly_. Что вы пробовали с точки зрения изменения кода, который вы показываете выше, чтобы он обрабатывал каждый эллипс отдельно? Вам действительно нужно восемь разных эллипсов в вашем коде, чтобы проиллюстрировать проблему? Пожалуйста, отредактируйте свой пост, чтобы он включал только хороший [mcve], который наглядно иллюстрирует ваш вопрос и подробное, точное объяснение конкретной проблемы. –
* «Я не знаю, как индивидуально изменить цвет заливки каждого круга» * - как вы хотите достичь этого? Через код-за или через Xaml? * Когда * вы хотите, чтобы это произошло? Ваш вопрос по-прежнему очень неясен. –