用Visual Studio写一个带样式的路口交通灯模拟系统
时间: 2023-06-12 17:05:11 浏览: 69
好的,下面是实现该模拟系统的步骤:
1. 创建一个 Windows 窗体应用程序项目,并添加一个 PictureBox 控件和两个按钮控件。
2. 在 PictureBox 控件的 Paint 事件中实现路口和交通灯的绘制。可以使用 Graphics 类的方法绘制路口和交通灯的圆形、矩形等形状,并设置相应的颜色。
3. 添加按钮的 Click 事件,分别实现交通灯的红绿状态切换。可以使用一个变量来记录当前交通灯的状态,并在按钮的 Click 事件中根据当前状态进行切换。
4. 在交通灯状态切换后,重新绘制 PictureBox 控件,以显示最新的交通灯状态。
下面是示例代码:
```
using System;
using System.Drawing;
using System.Windows.Forms;
namespace TrafficLightSimulation
{
public partial class MainForm : Form
{
private int lightState = 0; // 交通灯状态:0-红灯,1-绿灯
public MainForm()
{
InitializeComponent();
}
private void MainForm_Load(object sender, EventArgs e)
{
// 设置 PictureBox 控件的大小和位置
pictureBox1.Size = new Size(400, 400);
pictureBox1.Location = new Point(10, 10);
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
// 绘制路口和交通灯
Graphics g = e.Graphics;
// 绘制路口
Rectangle rect = new Rectangle(100, 100, 200, 200);
g.DrawRectangle(Pens.Black, rect);
// 绘制交通灯
SolidBrush brush = new SolidBrush(Color.Gray);
g.FillEllipse(brush, 150, 150, 100, 100); // 灰色圆形底座
brush.Dispose();
if (lightState == 0)
{
// 红灯
brush = new SolidBrush(Color.Red);
g.FillEllipse(brush, 160, 160, 80, 80); // 红色圆形灯
brush.Dispose();
}
else
{
// 绿灯
brush = new SolidBrush(Color.Green);
g.FillEllipse(brush, 160, 220, 80, 80); // 绿色圆形灯
brush.Dispose();
}
}
private void button1_Click(object sender, EventArgs e)
{
// 切换交通灯状态
if (lightState == 0)
{
lightState = 1;
}
else
{
lightState = 0;
}
// 重新绘制 PictureBox 控件
pictureBox1.Invalidate();
}
private void button2_Click(object sender, EventArgs e)
{
// 退出程序
Application.Exit();
}
}
}
```
在代码中,使用了一个变量 lightState 来记录当前交通灯的状态,0 表示红灯,1 表示绿灯。在每次点击切换按钮时,根据当前状态进行切换,并重新绘制 PictureBox 控件以显示最新的交通灯状态。