数码管

在开发上位机UI界面时,我们常常会希望数值可以以7段数码管的形式呈现。

关于7段数码管,最早接触应该是学习单片机的时候,它可以将数字或者字母以7段字符来呈现,所以有时候也叫7段LED数码管显示。

实现思路

C#想要实现7段数码管显示,一般会有两种思路,一种是GDI+,通过代码绘制的方式来实现,今天,给大家介绍另外一种简单而又方便的方式,那就是通过设置字体,提前做好一个7段码的字体,在电脑中安装好即可,当然字体也可以用现成的,这里给大家提供一个线程的7段码字体,公众号回复关键词:7SEG 或 124

使用也很简单,就是拖放一个Label标签到界面上,然后设置字体选择为7SEG,设置合适的字体大小即可。

使用7SEG字体,前提要安装这个字体,安装也很简单,双击下载的7SEG.ttf即可。

最终呈现的效果如下所示:

项目应用

这个提及一下项目应用,如果我们开发好项目,把程序放到其他电脑上使用,由于其他电脑没有安装7SEG的字体,效果肯定会不一样。

一种方法就是提前手动安装好字体,然后再运行程序,但是也没有其他好的方法呢?

也许你们也想到了,就是通过代码自动完成,思路就是检测字体是否存在,存在则继续,不存在则通过代码安装字体。

所以首先需要第一个方法,检测某个字体是否存在,方法如下:

        /// <summary>/// 检测某种字体样式是否可用/// </summary>/// <param name="familyName">字体名称</param>/// <param name="fontStyle">字体样式</param>/// <returns></returns>private bool CheckFont(string familyName, FontStyle fontStyle = FontStyle.Regular){InstalledFontCollection installedFontCollection = new InstalledFontCollection();FontFamily[] fontFamilies = installedFontCollection.Families;foreach (var item in fontFamilies){if (item.Name.Equals(familyName)){return item.IsStyleAvailable(fontStyle);}}return false;}

有了这个方法之后,还需要另外一个方法就是安装字体,安装字体需要提供字体的路径,代码如下:

        /// <summary>/// 安装字体/// </summary>/// <param name="fontFilePath">字体文件全路径</param>/// <returns>是否成功安装字体</returns>/// <exception cref="UnauthorizedAccessException">不是管理员运行程序</exception>/// <exception cref="Exception">字体安装失败</exception>private bool InstallFont(string fontFilePath){try{System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);//判断当前登录用户是否为管理员if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator) == false){throw new UnauthorizedAccessException("当前用户无管理员权限,无法安装字体");}//获取Windows字体文件夹路径string fontPath = Path.Combine(System.Environment.GetEnvironmentVariable("WINDIR"), "fonts", Path.GetFileName(fontFilePath));//检测系统是否已安装该字体if (!File.Exists(fontPath)){                 //将某路径下的字体拷贝到系统字体文件夹下File.Copy(fontFilePath, fontPath); //font是程序目录下放字体的文件夹AddFontResource(fontPath);//安装字体WriteProfileString("fonts", Path.GetFileNameWithoutExtension(fontFilePath) + "(TrueType)", Path.GetFileName(fontFilePath));}}catch (Exception ex){return false;}return true;}

最终在项目运行初始化里执行如下代码:

           if (!CheckFont("7SEG")){if (InstallFont(FontPath)){MessageBox.Show("字体安装成功,重启生效!", "字体安装");}else{MessageBox.Show("字体安装失败!", "字体安装");}}

其中FontPath是字体文件的路径,一般可以提前方法根目录下。这样即使是没有安装字体的电脑,也可以直接正常显示了。

如何巧妙使用7段码数码管?相关推荐

  1. 让51单片机八段数码管亮起来(静态显示和动态显示、共阴极和共阳极、位码和段码)

    51单片机数码管的显示 一.八段数码管基础部分 1.八段数码管的共阴极和共阳极 2.八段数码管的位码和段码 二.八段数码管动态显示 1.八个八段数码管动态扫描0到7流水显示 2.八个八段数码管动态扫描 ...

  2. 数码管段码代码查询工具

    数码管段码代码查询工具 LED代码查询V1.1 虽然在大部分情况下,我们常用的数字和字母显示,在网上一搜索即可得到,但是对于不常用的或者自定义的字符显示,利用这个工具就显得很方便了,对于非常熟悉数码管 ...

  3. LED数码管段码生成

    LED数码管段码计算器 前言 最近在复习单片机的知识,写编写LED数码管的驱动时,嫌计算太麻烦,就做了个WinForm项目 正文 原理 这里的LED数码管指的是8段数码管 我们可以看到每个LED数码管 ...

  4. 共阴数码管段码-共阳数码管段码

    单片机系统中常用的显示器有:发光二极管LED(Light Emitting Diode)显示器.液晶LCD(Liquid Crystal Display)显示器.CRT显示器等.LED.LCD显示器有 ...

  5. 段码液晶屏笔段电压范围_可以用段码液晶屏的驱动方式驱动数码管屏吗?

    原标题:可以用段码液晶屏的驱动方式驱动数码管屏吗? 之前一个客户在晶拓做过一款段码液晶屏,是首先用这种屏来显示,客户的工程师只做过TFT串口屏的程序,所以当时段码屏的显示驱动程序是晶拓软件工程师帮忙写 ...

  6. 7段并行数码管显示实验C语言,七段数码管显示十进制数字 (15)

    实验报告 实验题目 设有10个开关,编号分别为0,1,--,9. 设计电路实现某开关闭合时对应显示相应的十进制数字.要求:(1)写出设计说明,(2)用 Proteus或Multisim仿真. 实验方案 ...

  7. 段码液晶屏点亮思路--以华大单片机为例

    目录 前言 一.什么是段码液晶? 二.段码点亮基本原理 1.液晶发光的基本原理 2.LCD控制器简介 三.华大单片机LCD驱动简介 1.段码液晶seg-com表 2.LCD原理图 3.LCD输出配置寄 ...

  8. FPGA _Verilog HDL_十六进制7段码显示译码器设计实验

    一.题目 十六进制7段码显示译码器设计实验. 二.源代码 说明:本实验使用的是共阴数码管. //---------------------------------------------------- ...

  9. 段码液晶屏学习应用笔谈

    液晶显示屏,英文简称LCD,全称为Liquid Crystal Display. LCD从类型上分:有TN型LCD,STN型LCD和TFT型LCD等. 不同类型LCD差别: TN型 STN型 TFT型 ...

最新文章

  1. java日期比较大小_java日期大小比较
  2. linux命令下怎么保存python_Linux 环境下安装 Python3 的操作方法
  3. MFC Timer定时器
  4. HDFS分布式文件系统理论知识
  5. c语言程序设计--图书管理系统
  6. Javascript 之《函数传参到底是值传递还是引用传递》
  7. 模式串匹配的BF算法和KMP算法
  8. op手机突然显示无服务器,op手机 云服务器
  9. manjaro安装微软雅黑字体_manjaro设置字体_Manjaro 20.03字体美化的2.5个级别
  10. xampp修改mysql的默认空密码
  11. Automysqlbackup: WARNING: Turning off multicore support, since pigz isn’t there.
  12. Ubuntu各版本代号
  13. java生产者消费者 阻塞_java之使用阻塞队列实现生产者,消费者模式
  14. hive 留存率 计算
  15. 【HashTab初学】哈希表
  16. java中设置基偶隔行换色_Excel2016中奇偶行填充不同颜色的方法
  17. mysql中的case when 与if else
  18. 关于SEO(搜索引擎优化)的个人掌握知识分享
  19. 分享一本Java并发编程的免费好书
  20. 传说中的100句英语可以帮你背7000单词(zt)

热门文章

  1. 分享一些超级有逼格的前端代码
  2. c语言枚举法课程设计报告,枚举法的程序实现及优化
  3. 冬瓜哥对时间和空间的理解方式—时空参悟(下)
  4. linux裁剪图片的软件,技术|Linux有问必答——如何在Linux命令行中剪裁图像
  5. 第十三届蓝桥杯大赛软件赛省赛 Java 研究生组
  6. vc6.0静态链接库的创建与使用方法
  7. C#毕业设计——基于C#+asp.net+sqlserver在线论文提交系统设计与实现(毕业论文+程序源码)——在线论文提交系统
  8. web连接蓝牙电子秤navigator.bluetooth
  9. 开启hadoop之旅的大门–安装配置篇
  10. 银行外汇资金业务学习笔记(2)当我们在说头寸(position)的时候