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#自定义液晶数字控件的更多相关文章

  1. BitBlt()函数实现带数字百分比进度条控件、静态文本(STATIC)控件实现的位图进度条、自定义进度条控件实现七彩虹颜色带数字百分比

    Windows API BitBlt()函数实现带数字百分比进度条控件. 有两个例子:一用定时器实现,二用多线程实现. 带有详细注解. 此例是本人原创,绝对是网上稀缺资源(本源码用Windows AP ...

  2. C# Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面

    个人理解,开发应用程序的目的,不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景也最为复杂,包括但不限于:表格记录查询.报表查询.导出文件查询等等 ...

  3. Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面 z

    http://www.cnblogs.com/zuowj/p/4504130.html 不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景 也最为 ...

  4. C# WinForm自定义通用分页控件

    大家好,前几天因工作需要要开发一个基于WinForm的小程序.其中要用到分页,最开始的想法找个第三方的dll用一下,但是后来想了想觉得不如自己写一个玩一下 之前的web开发中有各式各样的列表组件基本都 ...

  5. 示例:自定义WPF底层控件UI库 HeBianGu.General.WpfControlLib V2.0版本

    原文:示例:自定义WPF底层控件UI库 HeBianGu.General.WpfControlLib V2.0版本 一.目的:封装了一些控件到自定义的控件库中,方便快速开发 二.实现功能: 基本实现常 ...

  6. UWP 自定义密码框控件

    1. 概述 微软官方有提供自己的密码控件,但是控件默认的行为是输入密码,会立即显示掩码,比如 *.如果像查看真实的文本,需要按查看按钮. 而我现在自定义的密码控件是先显示你输入的字符2s,然后再显示成 ...

  7. kettle系列-[KettleUtil]kettle插件,类似kettle的自定义java类控件

    该kettle插件功能类似kettle现有的定义java类插件,自定java类插件主要是支持在kettle中直接编写java代码实现自定特殊功能,而本控件主要是将自定义代码转移到jar包,就是说自定义 ...

  8. (转)sl简单自定义win窗体控件

    sl简单自定义win窗体控件      相信大家接触过不少win窗体控件ChildWin子窗口就的sl自带的一个  而且网上也有很多类似的控件,而今天我和大家分享下自己制作个win窗体控件,希望对初学 ...

  9. WPF自定义控件与样式(8)-ComboBox与自定义多选控件MultComboBox

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: 下拉选 ...

随机推荐

  1. ASP.net后台弹出消息对话框的方法!【转】

          在winform后台,我们通过MessageBox.show(“消息")的方式来返回后台信息,在webform后台,我们通过Response.write(”消息")来返 ...

  2. 学习S5

                  rztyfx的专栏       目录视图 摘要视图 订阅 [专家问答]阿里陈康贤:探讨大型网站之架构    走进VR开发世界——我们离开发一款VR大作还有多远?     C ...

  3. SQL技巧之分类汇总

    数据表结构username type numaaaa   玉米 1212aaaa   玉米  212bbb     小麦  2323bbb .... 只有两种产品 玉米和小麦,玉米价格1.5,小麦价格 ...

  4. 通过WebApi取出XML数据

    Get请求: public static Result<GetExpressCollectionResponseType> GetDataFromWebs(string waybillNu ...

  5. PHP开发圣经读书笔记01

    从今天开始,以“圣经”这本书为教材,系统的温习一下php,之前都是看视频学的. 1.访问表单变量--php变量名称必须与表单域的名称一致 例:$_POST['uname'];  //表示把表单域中na ...

  6. eclipse中配置maven的web项目

    提高效率,一般都会使用IED如eclipse来帮助开发.eclipse中单独建立一个web项目或者是maven项目是可以通过插件很容易完成的,但是如果要结合2者,就需要先建立一个,然后再转换或使原型. ...

  7. 使用内核定时器的second字符设备驱动及测试代码

    驱动: #include <linux/kernel.h> #include <linux/module.h> #include <linux/fs.h> #inc ...

  8. unity的旋转

    绕着一个点旋转 : transform.RotateAround(Vector3.zero, Vector3.up, speed* Time.deltaTime ); 第一个参数,点的位置.第二个参数 ...

  9. cocos2dx伸缩式列表效果

    效果: 代码: ElasticListView.h #pragma once //std #include <string> #include <map> //cocos #i ...

  10. 用原生JavaScript实现图片瀑布流的浏览效果

    学习JS,活跃思维,灵活运用的一个较为典型的学习案例.同一个瀑布流的效果但实现方式却很多,利用递归.冒泡等等手法都可以达到你想要的目的.这次要说的就是利用类似递归来实现此效果的原创方案.此方案个人认为 ...