-Begin-

数码管

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

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

实现思路

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

使用也很简单,就是拖放一个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是字体文件的路径,一般可以提前方法根目录下。这样即使是没有安装字体的电脑,也可以直接正常显示了。

这种取巧的方法,你应该掌握相关推荐

  1. word标题为第一章,将图题由图一.1设置题注为图1.1的取巧方法

    word标题为第一章,将图题由图一.1设置题注为图1.1的取巧方法 一个很取巧的方法,设置一级标题为正常的阿拉伯数字,但是设置字体样式为隐藏,然后手敲章节一,瞒天过海.这样,题注就变为了图1.1.当然 ...

  2. JS删除String里某个字符的方法

    关于JS删除String里的字符的方法,一般使用replace()方法.但是这个方法只会删除一次,如果需要将string里的所以字符都删除就要用到正则. 1 2 3 4 var str = " ...

  3. mybatis example处理and、or关系的方法

    转载自  mybatis example处理and.or关系的方法 1.( xx and xx) or ( xx and xx) 实例代码: BaUserExample baUserExample = ...

  4. python3打包exe运行没反应_python selenium运行,打包exe常见问题解决方法

    selenium是一款优秀的自动化测试工具,支持的语言也非常广泛,其中以python语言最为高效简洁,本文以Python3.5.2为例. 首先需要安装selenium插件,命令行下pip instal ...

  5. 套用这8种数据治理方法,解决90%的数据治理问题

    转载/大数据构架师 前些天,有客户问我,数据治理到底该怎么做?这个问题问的我是一时语塞.因为是在客户现场,我只能根据他的实际情况,针对性的提了一个方案.不过,这客户还真的是做了一些工作,然后就开始讨论 ...

  6. 懒人修仙传ce修改方法_盘点《西游记》中增长寿命的6种方法,其中长生不老的方法有三种...

    长生不老是每个人梦寐以求的事情,古代那么多皇帝没事就请道士来炼丹,不就是希望自己能长生不老么,结果不仅没长生不老,反而因丹毒而英年早逝.而这种思想,也是深深的影响着诸多小说,比如<西游记> ...

  7. 防止ViewPager中的Fragment被销毁的方法

    2019独角兽企业重金招聘Python工程师标准>>> 在使用ViewPager与Fragment的时候,ViewPager会自动缓存1页内的数据,如下图: 当我们当前处在页面2的时 ...

  8. 三维投影总结:数学原理、投影几何、OpenGL教程、我的方法

    如果要得到pose视图,除非有精密的测量方法,否则进行大量的样本采集时很耗时耗力的.可以采取一些取巧的方法,正如A Survey on Partial of 3d shapes,描述的,可以利用已得到 ...

  9. 仅仅有人物没背景的图片怎么弄_只会画人物不会画背景?这3种方法教你快速画背景!...

    原标题:只会画人物不会画背景?这3种方法教你快速画背景! 很多同学只会画人物不会画背景,于是就想到了一些骚操作-- 1.万年"留白"党:不会画干脆就不画,一片白板走天下! 喂喂喂, ...

最新文章

  1. effectivec++条款18,让接口容易被正确使用,不宜被吴勇
  2. 【RecyclerView】 五、RecyclerView 布局 ( 瀑布流 | 交错网格局管理器 StaggeredGridLayoutManager )
  3. 有关scanf输入的问题
  4. 北大OJ百练——3179:最长单词(C语言)
  5. mongodb 导出 带条件_将 MongoDB 导出成 csv
  6. [云炬创业基础笔记]第一章创业环境测试8
  7. Lib详解--如何判断lib文件是静态库还是导入库
  8. HDU3143Speedy Escape 最短路+二分+搜索
  9. 【渝粤题库】国家开放大学2021春3700汽车电工电子基础题目
  10. Linux命令:ls、grep、wc统计目录下文件及文件夹的个数。
  11. 用 document.readyState == complete 判断页面是否加载完成。
  12. offset Dimensions 详解
  13. 20145302张薇《Java程序设计》第三周学习总结
  14. ccc强制性认证是什么?
  15. julia安装源_Julia 国内镜像安装实测
  16. 计算机网络介绍,TCP协议,Socket网络编程
  17. Linux-Kali——解决Gnome桌面右键菜单无法打开terminal终端的问题
  18. 基于SPSS的正态性检验方法汇总——以个股收益率为例(超详细)
  19. openlayers4+中高德导航路径的实现
  20. 使用ls筛选某一天的文件

热门文章

  1. Tobii眼动仪插件和案例
  2. jQuery制作照片墙
  3. 关于Authorware和文本格式
  4. Oracle DBA认证考试
  5. java微信Url转文本
  6. CSS3_flex布局, 永远滴神 !
  7. 投资学实务-郑商所比赛-交易记录8
  8. Flash Builder 4注册机下载地址
  9. Delphi窗体任务栏隐藏和透明
  10. 使用easyrsa3来制作证书