求网站2021在线观看,设计app的软件,数据中心机房运维方案,ps做分享类网站效果图群友提问#xff1a;C#中的指示灯怎么做#xff0c;改变状态有什么好的方法吗#xff1f;制作指示灯的方法有很多中#xff1a;比如#xff1a;通过GDI绘制自定义LED指示灯控件#xff1b;调用现成的第三方控件库#xff1b;采用label标签#xff0c;通过改变背景色实现… 群友提问C#中的指示灯怎么做改变状态有什么好的方法吗制作指示灯的方法有很多中比如通过GDI绘制自定义LED指示灯控件调用现成的第三方控件库采用label标签通过改变背景色实现等等本文就以第三种方式展开讲解01—实现效果02—实现代码前台代码添加两个按钮和一个标签StackPanelBorder BorderBrushRed/BorderButton NameStartBtn ContentStart/Button NameStopBtn ContentStop/Label NameDisplayLbl Visibility{Binding DisplaySwitch} FontSize200HorizontalAlignmentCenter VerticalAlignmentCenterContent{Binding LabelText} Foreground{Binding ForeColor} //StackPanel后台代码①安装PropertyChanged.Fodyusing PropertyChanged;然后在类前面添加 [AddINotifyPropertyChangedInterface]类中所有属性变更后就会自动通知界面变更②通过DisplaySwitch 属性控制指示灯的显示或者隐藏然后通过界面的start按钮启动指示灯stop关闭指示灯③指示灯背景色的改变通过独立线程控制跨线程修改UI线程控件属性使用Caliburn.Micro框架下的 Execute.OnUIThread((){});实现。using PropertyChanged;
using System.Threading;
using System.Windows;
using System.Windows.Media;
using Brush System.Windows.Media.Brush;namespace Caliburn.Micro.Hello
{[AddINotifyPropertyChangedInterface]public class IndicatorLightViewModel : IViewModel{public Visibility DisplaySwitch { get; set; } Visibility.Hidden;public string LabelText { get; set; }public Brush ForeColor { get; set; }private Thread workTask;public IndicatorLightViewModel(){ForeColor new SolidColorBrush(Color.FromRgb(255, 0, 0));}public void StartBtn(){DisplaySwitch Visibility.Visible;LabelText ●;if (workTask null || !workTask.IsAlive){workTask new Thread(IndicatorLightOperation);//添加线程 workTask.IsBackground true;workTask.Start();}}public void StopBtn(){if (workTask null || workTask.IsAlive){workTask.Abort();}DisplaySwitch Visibility.Hidden;}public void IndicatorLightOperation(){while (true){Execute.OnUIThread((){if (((SolidColorBrush)ForeColor).Color.Equals(Color.FromRgb(255, 0, 0))){ForeColor new SolidColorBrush(Color.FromRgb(0, 255, 0));}else{ForeColor new SolidColorBrush(Color.FromRgb(255, 0, 0));}});Thread.Sleep(500);}}}
}03— 其它相关Brush颜色转换1、String转换成ColorColor color (Color)ColorConverter.ConvertFromString(string);2、String转换成BrushBrushConverter brushConverter new BrushConverter();Brush brush (Brush)brushConverter.ConvertFromString(string);3、Color转换成BrushBrush brush new SolidColorBrush(color));4、Brush转换成Color有两种方法1先将Brush转成string再转成Color。Color color (Color)ColorConverter.ConvertFromString(brush.ToString());2将Brush转成SolidColorBrush再取Color。Color color ((SolidColorBrush)CadColor.Background).Color;