Search code examples
c#winformsonpaint

How can I convert EventArgs to PaintEventArgs, C#


I want to call OnPaint() when MCU_timer_Tick() is called. How can I do?

    private void MCU_timer_Tick(object sender, EventArgs e)
    {
        ...
    }
    protected override void OnPaint(PaintEventArgs e)
    {
      Graphics g = e.Graphics;

      int width = 30;
      int x, y;
      x = 150;
      y = 530;
      double color_max;
      color_max = 255;
      SolidBrush aBrush_1 = 
        new SolidBrush(Color.FromArgb(100, 255, 
        (int)(255 * color_map[0] / color_max), 0)); //color_map[0] is real value
      g.FillEllipse(aBrush_1, x-100, y, width * 2, width);

Solution

  • Call this.Invalidate() in Tick event. That will eventually make the Paint event happen.

    private void MCU_timer_Tick(object sender, EventArgs e)
    {
        this.Invalidate();
    }
    

    where this refers to a Control. Typically a Form.