c#自定义液晶数字控件
c#自定义液晶数字控件
项目中经常与硬件打交道,LED显示屏上面的液晶数字很好看,QT中直接就有数码管这个控件,C#中自己来写一个,其实掌握了一种自定义控件的写法,其他的都是浮云,举一反三,最笨的自定义控件无非就是准备好精美的图片,然后双缓冲根据条件绘制到界面上,将手机QQ和金山毒霸手机版下载写来,拓展名改为rar,解压出来,在 res文件夹下面可以看到所有使用的资源,直接拿过来用咯。其实手机软件大部分效果都是绘制图片+文字而成的。
效果图:一个动态的液晶时钟
步骤1:
准备0-9十张图片
添加到项目资源里面。
步骤2:
新建用户控件myButtonNumber,构造函数里面设置双缓冲。
public myButtonNumber()
{
InitializeComponent();
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.DoubleBuffer, true);
this.SetStyle(ControlStyles.ResizeRedraw, true);
this.SetStyle(ControlStyles.Selectable, true);
this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
this.SetStyle(ControlStyles.UserPaint, true);
this.BackColor = Color.Transparent;
this.Size = new Size(39, 68);
}
步骤3:
增加属性Number,这样的话可以在属性栏里面找到并赋值。
int number = 0;
public int Number
{
set
{
if (value < 0 || value > 9) { number = 0; } else { number = value; }
this.Invalidate();
}
get { return number; }
}
步骤4:
重写OnPaint事件(绝大部分自定义控件都需要重写这个事件)
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
Rectangle rec = new Rectangle(0, 0, this.Size.Width, this.Size.Height);
switch (number)
{
case 0: g.DrawImage(global::myAlarmSystem.Properties.Resources.number_0, rec); break;
case 1: g.DrawImage(global::myAlarmSystem.Properties.Resources.number_1, rec); break;
case 2: g.DrawImage(global::myAlarmSystem.Properties.Resources.number_2, rec); break;
case 3: g.DrawImage(global::myAlarmSystem.Properties.Resources.number_3, rec); break;
case 4: g.DrawImage(global::myAlarmSystem.Properties.Resources.number_4, rec); break;
case 5: g.DrawImage(global::myAlarmSystem.Properties.Resources.number_5, rec); break;
case 6: g.DrawImage(global::myAlarmSystem.Properties.Resources.number_6, rec); break;
case 7: g.DrawImage(global::myAlarmSystem.Properties.Resources.number_7, rec); break;
case 8: g.DrawImage(global::myAlarmSystem.Properties.Resources.number_8, rec); break;
case 9: g.DrawImage(global::myAlarmSystem.Properties.Resources.number_9, rec); break;
}
}
代码下载:https://files.cnblogs.com/feiyangqingyun/myAlarmSystem20130527.zip
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)