如何使用7段码数码管?

数码管在开发上位机ui界面时,我们常常会希望数值可以以7段数码管的形式呈现。
关于7段数码管,最早接触应该是学习单片机的时候,它可以将数字或者字母以7段字符来呈现,所以有时候也叫7段led数码管显示。
实现思路c#想要实现7段数码管显示,一般会有两种思路,一种是gdi+,通过代码绘制的方式来实现,今天,给大家介绍另外一种简单而又方便的方式,那就是通过设置字体,提前做好一个7段码的字体,在电脑中安装好即可,当然字体也可以用现成的,这里给大家提供一个线程的7段码字体,公众号回复关键词:7seg 或 124
使用也很简单,就是拖放一个label标签到界面上,然后设置字体选择为7seg,设置合适的字体大小即可。
使用7seg字体,前提要安装这个字体,安装也很简单,双击下载的7seg.ttf即可。
最终呈现的效果如下所示:
项目应用这个提及一下项目应用,如果我们开发好项目,把程序放到其他电脑上使用,由于其他电脑没有安装7seg的字体,效果肯定会不一样。
一种方法就是提前手动安装好字体,然后再运行程序,但是也没有其他好的方法呢?
也许你们也想到了,就是通过代码自动完成,思路就是检测字体是否存在,存在则继续,不存在则通过代码安装字体。
所以首先需要第一个方法,检测某个字体是否存在,方法如下:
/// /// 检测某种字体样式是否可用 /// /// 字体名称 /// 字体样式 /// 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; }有了这个方法之后,还需要另外一个方法就是安装字体,安装字体需要提供字体的路径,代码如下:
/// /// 安装字体 /// /// name=fontfilepath>字体文件全路径 /// 是否成功安装字体 /// 不是管理员运行程序 /// 字体安装失败 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是字体文件的路径,一般可以提前方法根目录下。这样即使是没有安装字体的电脑,也可以直接正常显示了。
-end-

海信遥控器通用机型对照表
高通被调查续:引发4G自主知识产权焦虑
一文解HDR的来源,作用及发展趋势
英特尔以智能赋予工厂最强大脑
vivo X20和荣耀9哪个值得买?华为荣耀9与vivo X20区别对比详细评测
如何使用7段码数码管?
张江发明了一种新型成像技术——共聚焦光场显微镜
第四季度DRAM市场动态:美光破魔咒,海力士创最高纪录
智能制造可以怎样为高质量发展提供动力
兴业证券与华为签署战略合作协议,共谱证券行业数智化建设新篇章
基于nios ii嵌入式软核处理器的嵌入式系统设计解决方案
科创板上市委同意埃夫特的首发上市申请
兰钧首批314Ah电芯正式量产下线
关于预测AI的十项原则
德索LVDS端子冷知识
商汤和港中大开源了基于PyTorch的检测库——mmdetection
威控科技热电厂热网无线远程计量监控解决方案
焊机联网系统
智能手机白屏死机避免方法
何飚升任中国联通副总经理