我有一个小的初学者问题,我有一个buttonclick事件,我希望事件在form1_paint中初始化绘画事件。我有一个班级Oversteekplaats有两个绘画事件,一个叫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);
}
}
那么,你有没有尝试运行这段代码,看看它是否你想要做什么? – millimoose
所有按钮点击都会翻转布尔值 – Jonesopolis
使用'Form1.Invalidate()'重新绘制。我认为这就是你想要的。 – MahanGM