0

我有一个小的初学者问题,我有一个 buttonclick 事件,我希望该事件在 form1_paint 中初始化一个绘画事件。我有一个 Oversteekplaats 类,有 2 个绘画事件,一个叫做 teken1,另一个叫做 teken2。在 Form1_paint teken1 已经初始化。当您单击 Button1 时,通过一个布尔值更改,我希望它重新绘制 form1_paint。

代码:

    public Form1()
{
    InitializeComponent();

    // Opdracht 1
    rood = new FietsLamp(Color.Red, 10, 10, 60);
    oranje = new VoetgangerLamp(Color.Orange, 120, 10, 60);
    rood.Status = LampStatus.Aan;
    oranje.Status = LampStatus.Aan;

    // Opdracht 2
    stoplicht = new Stoplicht(10, 120, 130, 280);

    // Opdracht 3
    voetgangerlicht = new VoetgangerStoplicht(150, 120, 130, 195);
    fietslicht = new FietsStoplicht(290, 120, 130, 195);

    // Opdracht 5 (teken oversteekplaats en zebrapad voor voetganger)
    oversteekplaats1 = new Oversteekplaats(650, 10, 200, 200);
    oversteekplaats2 = new Oversteekplaats(650, 210, 200, 200);
    oversteekplaats3 = new Oversteekplaats(650, 410, 200, 200);
    oversteekplaats4 = new Oversteekplaats(450, 210, 200, 200);
    oversteekplaats5 = new Oversteekplaats(850, 210, 200, 200);
}


private void button1_Click(object sender, EventArgs e)
{
    if (voetganger == false) 
    { 
        voetganger = true; 
    }
    if (voetganger == true) 
    { 
        voetganger = false;
    }

}

public void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
    // Opdracht 1 graphics
    rood.Teken(e.Graphics);
    oranje.Teken(e.Graphics);

    // Opdracht 2 graphics
    stoplicht.Teken(e.Graphics);

    // Opdracht 3 graphics
    voetgangerlicht.Teken(e.Graphics);
    fietslicht.Teken(e.Graphics);

    // Opdracht 5 graphics
    oversteekplaats1.Teken1(e.Graphics);
    oversteekplaats2.Teken1(e.Graphics);
    oversteekplaats3.Teken1(e.Graphics);
    oversteekplaats4.Teken1(e.Graphics);
    oversteekplaats5.Teken1(e.Graphics);

    if (voetganger == true)
    {
    oversteekplaats4.Teken2(e.Graphics, 120);
    }
}
4

1 回答 1

0

如果您想在单击按钮后刷新图纸,只需调用Invalidate().

private void button1_Click(object sender, EventArgs e)
{
    if (voetganger == false) 
    { 
        voetganger = true; 
    }
    else if (voetganger == true) 
    { 
        voetganger = false;
    }

    this.Invalidate();
}

为了考虑周到,我将这样写这个条件:

private void button1_Click(object sender, EventArgs e)
{
    voetganger = !(voetganger);
    this.Invalidate();
}
于 2013-10-31T15:02:36.487 回答