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;
}
}
代码下载:http://files.cnblogs.com/feiyangqingyun/myAlarmSystem20130527.zip
c#自定义液晶数字控件的更多相关文章
- BitBlt()函数实现带数字百分比进度条控件、静态文本(STATIC)控件实现的位图进度条、自定义进度条控件实现七彩虹颜色带数字百分比
Windows API BitBlt()函数实现带数字百分比进度条控件. 有两个例子:一用定时器实现,二用多线程实现. 带有详细注解. 此例是本人原创,绝对是网上稀缺资源(本源码用Windows AP ...
- C# Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面
个人理解,开发应用程序的目的,不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景也最为复杂,包括但不限于:表格记录查询.报表查询.导出文件查询等等 ...
- Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面 z
http://www.cnblogs.com/zuowj/p/4504130.html 不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景 也最为 ...
- C# WinForm自定义通用分页控件
大家好,前几天因工作需要要开发一个基于WinForm的小程序.其中要用到分页,最开始的想法找个第三方的dll用一下,但是后来想了想觉得不如自己写一个玩一下 之前的web开发中有各式各样的列表组件基本都 ...
- 示例:自定义WPF底层控件UI库 HeBianGu.General.WpfControlLib V2.0版本
原文:示例:自定义WPF底层控件UI库 HeBianGu.General.WpfControlLib V2.0版本 一.目的:封装了一些控件到自定义的控件库中,方便快速开发 二.实现功能: 基本实现常 ...
- UWP 自定义密码框控件
1. 概述 微软官方有提供自己的密码控件,但是控件默认的行为是输入密码,会立即显示掩码,比如 *.如果像查看真实的文本,需要按查看按钮. 而我现在自定义的密码控件是先显示你输入的字符2s,然后再显示成 ...
- kettle系列-[KettleUtil]kettle插件,类似kettle的自定义java类控件
该kettle插件功能类似kettle现有的定义java类插件,自定java类插件主要是支持在kettle中直接编写java代码实现自定特殊功能,而本控件主要是将自定义代码转移到jar包,就是说自定义 ...
- (转)sl简单自定义win窗体控件
sl简单自定义win窗体控件 相信大家接触过不少win窗体控件ChildWin子窗口就的sl自带的一个 而且网上也有很多类似的控件,而今天我和大家分享下自己制作个win窗体控件,希望对初学 ...
- WPF自定义控件与样式(8)-ComboBox与自定义多选控件MultComboBox
一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: 下拉选 ...
随机推荐
- Poj/OpenJudge 1000 A+b Problem C/C++/Java
1.题意翻译: 输入两个整数a,b (0<=a,b<=10),计算a+b的值并输出. 其中还提到输出不能有多余的内容,即不能加多空格符号等内容,不然会报Wrong ...
- 初识jQuery(适合初学者哟.........)
您要知道!! jQuery是目前使用最广泛的javascript函数库.据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库. 微软公司甚至把jQuery作为他们的官方库.对 ...
- mysql基本知识
最大连接数show variables max_connections; select VARIABLE_VALUE from information_schema.GLOBAL_VARIABLES ...
- php中的数组定义和使用
<?php //这个是一个php关于数组的例子,简要的说明了数组的基本使用 //定义一个字符串数组 $fruit = array(\"apple\",\"orang ...
- about building flying sauser
download flying sauser: unzip flyingsaucer-master.zip cd flyingsaucer-master/ mvn install
- Django路由
一.路由流程 1. 用户浏览器发出请求后,通过根url设置,去找urlpattern变量.在setting.py中对 ROOT_URLCONF进行配置,以确定根URLconf(URL configur ...
- thinkphp 框架的学习(1) 扩展配置文件
在config.php里面写入 1:'LOAD_EXT_CONFIG' => array('SETTINGS' => 'settings'); 系统会判断是否有参数:LOAD_EXT_CO ...
- Java学习--String、StringBuffer与StringBuilder
String并不是基本数据类型,而是一个对象,并且是不可变的对象.String类为final型的不可被继承,而且通过查看JDK文档会发现几乎每一个修改String对象的操作,实际上都是创建了一个全新的 ...
- struts2 查 找总结
0:38 2013/5/25 查 找 * * |-_-查找全部 Action层的home方法中的查找方法创建时不需要带个查找对象的参数 service层不用组织条件 dao层一条查询所有的hql语句S ...
- pywinauto二次封装(pywinnat.py)
将pywinauto常用方法进行封装,使得pywinauto用起来更简单 #头文件的引入 from pywinauto import application from pywinauto import ...