C# 制作指示灯(经典)

本文介绍了如何使用C#通过改变Label背景色来制作指示灯效果。通过添加按钮和标签,结合PropertyChanged.Fody实现属性变更通知,并使用独立线程控制背景色变化,以达到模拟指示灯开关的效果。

群友提问:C#中的指示灯怎么做,改变状态有什么好的方法吗?

制作指示灯的方法有很多中:比如:

  1. 通过GDI+绘制自定义LED指示灯控件;

  2. 调用现成的第三方控件库;

  3. 采用label标签,通过改变背景色实现;等等

本文就以第三种方式展开讲解

01实现效果

02实现代码

前台代码:

添加两个按钮和一个标签:


  <StackPanel>
        <Border BorderBrush="Red"></Border>
        <Button Name="StartBtn" Content="Start"/>
        <Button Name="StopBtn" Content="Stop"/>
        <Label Name="DisplayLbl" Visibility="{Binding DisplaySwitch}" FontSize="200"
               HorizontalAlignment="Center" VerticalAlignment="Center"
               Content="{Bi
### 关于 C# WinForms 指示灯控件 对于希望在 C# WinForms 项目中集成指示灯控件的需求,可以考虑使用来自 NuGet 库中的第三方组件。这些组件通常提供了丰富的功能和良好的用户体验。 #### 使用 Krypton Toolkit Krypton Toolkit 是一个非常流行的用于增强 Windows Forms 应用程序外观的工具集之一。其中包含了多种自定义控件,包括可用于显示状态的指示灯控件。 安装方法如下: ```powershell Install-Package ComponentFactory.Krypton.Toolkit ``` 安装完成后,在设计器中应该能够看到新增加的各种 Krypton 控件选项,其中包括适合做为指示灯用途的颜色按钮或其他样式化的元素[^1]。 #### 使用 Extended.Wpf.Toolkit (WinForms Wrapper) 虽然名称中含有 WPF,但是 Extended.Wpf.Toolkit 提供了一个 WinForms 的包装类库 `Extended.Wpf.Toolkit.WinForms` ,这使得一些原本只存在于 WPF 中的功能可以在 WinForms 下实现,比如 Material Design 风格下的圆形进度条也可以被当作一种特殊的指示灯来应用。 添加方式同样简单: ```powershell Install-Package Extended.Wpf.Toolkit.WinForms ``` 需要注意的是,由于这是针对 WPF 组件的一个封装,所以在某些情况下可能不如原生 WinForms 解决方案那样高效或稳定[^2]。 #### 自定义绘制圆形单选框作为简易指示灯 如果对外观有特殊需求或是不想依赖额外的大规模库文件,则可以选择创建自己的用户控件。通过重写 OnPaint 方法并利用 GDI+ 进行图形渲染,很容易就能制作出满足基本要求的状态指示器。 下面是一个简单的例子: ```csharp public class StatusIndicator : Control { private Color _color; public Color IndicatorColor { get => _color; set { _color = value; Invalidate(); // 强制刷新界面以反映颜色变化 } } protected override void OnPaint(PaintEventArgs e){ base.OnPaint(e); using(var brush=new SolidBrush(_color)){ var rect=ClientRectangle; int diameter=Math.Min(rect.Width,rect.Height)-4; Point center=new Point(ClientRectangle.Left+diameter/2, ClientRectangle.Top+diameter/2); e.Graphics.FillEllipse(brush,new Rectangle( new Point(center.X-diameter/2,center.Y-diameter/2), new Size(diameter,diameter))); } } } ``` 这段代码实现了最基本的单色填充椭圆形状的指示灯效果,并允许外部修改其内部填充颜色从而改变视觉表现形式[^3]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值