Как я могу изменить цвет кисти случайно с помощью таймера? - PullRequest
0 голосов
/ 09 января 2019

У меня в эллипсе есть эллипс, свойство заливки которого я пытаюсь случайным образом изменить, т.е. я хочу, чтобы цвет моего эллипса постоянно менялся.

SolidBrush colour;

 private void drawBorder()
    {
        Pen bPen = new Pen(Color.Black, 8);
        colour = new SolidBrush(Color.Yellow);

        g.DrawEllipse(bPen, 412, 269, 19, 19);
        g.FillEllipse(colour, 412, 269, 19, 19);

        timer1.Enabled = true;
        timer1.Start();
    }


private void timer1_Tick(object sender, EventArgs e)
    {
        //g.FillEllipse(colour, 412, 269, 19, 19);

        if (this.colour.Color == Color.Yellow)
        {
            //MessageBox.Show("!", Color.Yellow.ToString());
            this.colour.Color = Color.Pink;
        }
        if (this.colour.Color == Color.Pink)
        {
            //MessageBox.Show("#", this.colour.Color.ToString());
            this.colour.Color = Color.Yellow;
        }
    }

1 Ответ

0 голосов
/ 09 января 2019

Объявите класс Random на уровне формы и используйте функцию Color.FromArgb, чтобы создать свой цвет:

private Color colour = Color.Black;
private Random rnd = new Random();

private void timer1_Tick(object sender, EventArgs e) {
  colour = Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256));
  this.Invalidate();
}

protected override void OnPaint(PaintEventArgs e) {      
  base.OnPaint(e);

  e.Graphics.Clear(Color.White);
  e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
  using (SolidBrush br = new SolidBrush(colour)) {
    e.Graphics.FillEllipse(br, new Rectangle(16, 16, 64, 64));
  }
}
...