WPF实现三色报警灯

在 WPF (Windows Presentation Foundation) 中,可以创建一个简单的三色灯控件,包含红、黄、绿三种颜色。当信号传来时相应的颜色会亮起。以下是实现这个控件的基本步骤和示例代码。
如图效果:
在这里插入图片描述

  1. 创建三色灯控件
    首先,您可以创建一个新的 UserControl,定义其外观和行为:
<UserControl x:Class="YourNamespace.TrafficLightControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Width="100" Height="300">
    
    <StackPanel>
        <Ellipse Name="RedLight" Fill="Gray" Width="80" Height="80" Margin="10"/>
        <Ellipse Name="YellowLight" Fill="Gray" Width="80" Height="80" Margin="10"/>
        <Ellipse Name="GreenLight" Fill="Gray" Width="80" Height="80" Margin="10"/>
    </StackPanel>
</UserControl>
  1. 代码后端
    然后,在代码后端TrafficLightControl.xaml.cs中,定义一个方法来根据传递的信号亮起灯。
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

namespace YourNamespace
{
    public partial class TrafficLightControl : UserControl
    {
        public TrafficLightControl()
        {
            InitializeComponent();
        }

        public void SetLight(string color)
        {
            ClearLights();
            switch (color.ToLower())
            {
                case "red":
                    RedLight.Fill = Brushes.Red;
                    break;
                case "yellow":
                    YellowLight.Fill = Brushes.Yellow;
                    break;
                case "green":
                    GreenLight.Fill = Brushes.Green;
                    break;
                default:
                    MessageBox.Show("Invalid color!");
                    break;
            }
        }

        private void ClearLights()
        {
            RedLight.Fill = Brushes.Gray;
            YellowLight.Fill = Brushes.Gray;
            GreenLight.Fill = Brushes.Gray;
        }
    }
}
  1. 使用控件
    接下来,您可以在您的主窗口中使用这个控件,并根据接收到的信号调用 SetLight 方法来改变灯的颜色:
<Window x:Class="YourNamespace.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:YourNamespace"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <local:TrafficLightControl x:Name="TrafficLight" HorizontalAlignment="Center" VerticalAlignment="Center"/>
        <Button Content="Send Red Signal" Click="RedButton_Click" Width="150" Height="30" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10"/>
        <Button Content="Send Yellow Signal" Click="YellowButton_Click" Width="150" Height="30" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,40,0,0"/>
        <Button Content="Send Green Signal" Click="GreenButton_Click" Width="150" Height="30" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,80,0,0"/>
    </Grid>
</Window>
  1. 代码后端处理按钮点击事件
    然后在主窗口代码后端中,处理按钮点击事件以发送信号:
using System.Windows;

namespace YourNamespace
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void RedButton_Click(object sender, RoutedEventArgs e)
        {
            TrafficLight.SetLight("red");
        }

        private void YellowButton_Click(object sender, RoutedEventArgs e)
        {
            TrafficLight.SetLight("yellow");
        }

        private void GreenButton_Click(object sender, RoutedEventArgs e)
        {
            TrafficLight.SetLight("green");
        }
    }
}

总结
这样你就可以创建一个简单的三色灯控件,并且通过按钮的点击事件来控制它的亮灯。根据你的需求,你可以进一步扩展这个控件的功能,比如添加自动切换灯的逻辑或者和外部信号进行交互。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值