mcu_lover 发表于 2020-6-17 21:41:32

HMI文本显示器(2) 设计器 之文本字体绘制

一个良好的设计器,必不可少的一项功能,是所见即所得的效果与实际尽量接近,理想情况是不要有差异。尤其对于这样的单色小分辨率的点阵液晶而言。
如果我们在上位机上面即可以看到最终生成的效果,则会大大提升效率。同时,软件的易用性也会提升很多。

因此在设计文本字符串类的显示控件时候。第一个要考虑的是是否需要增加对任意字体以及任意大小的支持。有很多国产的文本屏,往往只有固定的几种字
型可以选择,且字体的大小也无法任意选择,这对于开发易用好看的界面来说,是非常难以接受的。

在我们的项目里面,对于文本字符串类的控件显示,可以使用windows系统中已经安装的任意字体类型,同时字体的大小,加粗,是否下划线等属性都可以
任意设置。虽然支持这些操作会导致上位机的设计,以及下位机的相关代码都会变得更复杂,但我相信,一个好的界面离不开好的字体显示,这应该是我们
追求的第一个基本目标。

我们的下位机是单色类型的屏幕,在上位机上设计时候,就要考虑到,取消字体的抗锯齿显示,否则,就会导致所见即所得的观感变差(下位机单色无法抗锯齿)。
下面两图可以看到抗锯齿和不抗锯齿的差异,对于单色液晶来说,抗锯齿的显示效果会让人感到疑惑。

抗锯齿的显示效果:

无抗锯齿的显示效果:


显而易见,无抗锯齿的效果,更接近实际点阵屏的显示效果。
对于不同字体类型,同样字体大小的输出对比如下:


通过选择不同的字体,不同的大小,可以确定最合适的显示效果。
   
以上便是关于文本字体绘制方面的基本考虑。有任何想法,疑惑,欢迎跟帖讨论。

Himem 发表于 2020-6-17 22:01:45

本帖最后由 Himem 于 2020-6-17 22:08 编辑

像宋体黑体里面低像素时是使用自带点阵图来实现最佳显示效果的,而不用曲线渲染

569350810 发表于 2020-6-18 20:49:13

搬小板凳,来听蒋工上课。

minzhuzhongguo 发表于 2020-6-18 21:27:11

192*64这个分辨率很难搞吧,点阵屏搞灰度很难,我觉得只要把原理搞好就行,没有必要追求完全一致

qiqirachel 发表于 2020-6-18 21:38:59

细节好好,想到文本相关感觉是大工程,果然是大工程

mcu_lover 发表于 2020-6-18 21:58:09

qiqirachel 发表于 2020-6-18 21:38
细节好好,想到文本相关感觉是大工程,果然是大工程

是的,细节非常之多。上下位机都不容易。

mcu_lover 发表于 2020-6-18 21:59:50

minzhuzhongguo 发表于 2020-6-18 21:27
192*64这个分辨率很难搞吧,点阵屏搞灰度很难,我觉得只要把原理搞好就行,没有必要追求完全一致 ...

不是在单色点阵屏上面弄灰度效果。
是在上位机的设计界面中,设计出来的显示效果,要与下位机一致。所以在上位机的设计中,去掉了字体的抗锯齿输出功能。
这样所见即所得才名副其实。

Wolves_control 发表于 2020-6-21 14:44:18

我最近在设计单色文本原理图,设计好了绘制PCB打样,楼主用的是STM32F3还是F4系列那一型号,我用的103RDT6,刷个单色屏够用了

Wolves_control 发表于 2020-6-21 14:53:15

楼主 上位机生成二进制界面文件(BIN格式是需要用到GCC编译器?还是VC?),可以具体说下二进制界面配置文件实现方法吗?单片机底层解析BIN文件,需要分驱动层与界面配置层吧,很感兴趣

mcu_lover 发表于 2020-6-21 15:13:27

Wolves_control 发表于 2020-6-21 14:44
我最近在设计单色文本原理图,设计好了绘制PCB打样,楼主用的是STM32F3还是F4系列那一型号,我用的103RDT6 ...

F3够了,性能足够了

mcu_lover 发表于 2020-6-21 15:14:00

Wolves_control 发表于 2020-6-21 14:53
楼主 上位机生成二进制界面文件(BIN格式是需要用到GCC编译器?还是VC?),可以具体说下二进制界面配置文 ...

自定义的格式,按照定义去解析。

mcu_lover 发表于 2020-6-21 15:30:40

Wolves_control 发表于 2020-6-21 14:53
楼主 上位机生成二进制界面文件(BIN格式是需要用到GCC编译器?还是VC?),可以具体说下二进制界面配置文 ...

各类驱动写好之后,界面层解析字节码,调用各类驱动接口,主要两大核心,通信管理,界面交互和动作管理。

Wolves_control 发表于 2020-6-21 16:10:07

mcu_lover 发表于 2020-6-21 15:30
各类驱动写好之后,界面层解析字节码,调用各类驱动接口,主要两大核心,通信管理,界面交互和动作管理。 ...

驱动层与界面层解析需要有分序进行,裸跑这2个关联顺序会不会有阻塞;
单片机上电需要先运行驱动层在解析界面层?
单片机解析界面字节码是通过上位机事先预设好的界面码指令与单片机接受到这个指令码完成底层图绘显示,类似这样?会复杂化?

mcu_lover 发表于 2020-6-21 18:56:04

Wolves_control 发表于 2020-6-21 16:10
驱动层与界面层解析需要有分序进行,裸跑这2个关联顺序会不会有阻塞;
单片机上电需要先运行驱动层在解析 ...

三言两语说不清楚。后面我会讲到这些。你可以先按照自己思路去做,遇到问题了可以探讨。

mcu_lover 发表于 2020-6-21 19:09:31

Wolves_control 发表于 2020-6-21 16:10
驱动层与界面层解析需要有分序进行,裸跑这2个关联顺序会不会有阻塞;
单片机上电需要先运行驱动层在解析 ...

驱动一般是中断类型,比如通信数据收发。一般一个屏幕画面不会放特别多的界面元素,所以一般不存在阻塞的情况。除非你人为放置几百个控件在一个画面中,实际设计中,没有人会这样去设计界面。

Wolves_control 发表于 2020-6-22 17:45:19

我先做着,遇到问题发出来探讨;
楼主 首批预计什么时间发布!
订一套!

siemenswjl 发表于 2020-6-22 21:03:41

直接上彩色高分文本,字体取模要细腻。
同样的屏,老外做的英文字体会很小。且很清楚,没有模糊感
制冷用的手操器,也就是显示面板

Mr.D 发表于 2020-6-22 22:05:19

自己取过模,看着好模糊
尤其是跟那些GUI比,效果差很远,GUI好像都带抗锯齿算法

huxiaoping 发表于 2020-6-22 23:38:15

楼主的GUI非常漂亮,能不能开放个菜单生成给单片机用的,这个也是楼主的拿手菜,期待中。{:lol:}

mcu_lover 发表于 2020-6-23 00:14:52

siemenswjl 发表于 2020-6-22 21:03
直接上彩色高分文本,字体取模要细腻。
同样的屏,老外做的英文字体会很小。且很清楚,没有模糊感
制冷用的 ...

有具体的链接吗,看看有没有可以借鉴的地方

mcu_lover 发表于 2020-6-23 00:16:05

Mr.D 发表于 2020-6-22 22:05
自己取过模,看着好模糊
尤其是跟那些GUI比,效果差很远,GUI好像都带抗锯齿算法 ...

彩色一般抗锯齿显示效果会比较好一些。单色的取模看字体,有些字体也设计的很好看的

Excellence 发表于 2020-6-23 08:07:25

大工程,路过帮顶。

siemenswjl 发表于 2020-6-23 11:54:09

本帖最后由 siemenswjl 于 2020-6-23 11:55 编辑

mcu_lover 发表于 2020-6-23 00:14
有具体的链接吗,看看有没有可以借鉴的地方

老外的软件一般不公开。
国内有几家做的:优控,海微,正电

优控的硬件很好。那个软件功能太烂
海微没有实际用过
正电的软件功能最好。今年他们还在研发新品。三菱内核的一体机。上位机用的QT开发的

通病就是字体比较大,正电的可以指定io状态图片。这个非常好用

文本功能可以看看繁易的上位机。

mcu_lover 发表于 2020-6-23 13:55:51

siemenswjl 发表于 2020-6-23 11:54
老外的软件一般不公开。
国内有几家做的:优控,海微,正电



感谢,以前都接触过你提到的这些。功能规划比上述的只会好不会差,看最后完成情况。

mcu_lover 发表于 2020-6-23 14:04:40

siemenswjl 发表于 2020-6-23 11:54
老外的软件一般不公开。
国内有几家做的:优控,海微,正电



字体比较大是什么意思?我目前的规划是可以使用windows系统里面安装的所有字体,字号可以任意选择。
示例如下:



如果想要比较好的字体效果,可能自己要去网络寻找合适的字体。安装在windows系统中就可以使用了。

siemenswjl 发表于 2020-6-23 14:31:46

能用windows自带字体。已经很好了

linjpxt 发表于 2020-6-23 23:02:33

这种 16x16的汉字,一屏 196x64 的屏显示不了几个字,搞点清晰耐看的字体才是重要。抗锯齿是搞不了了,要么就选高分辨屏,比如640x480之类的,要么就选灰度屏,其实也可以考虑电墨水屏。

dtdzlujian 发表于 2020-6-26 22:29:08

文本还要支持众多协议,这样使用起来方便。真正开发要不少时间。

cooltommy 发表于 2020-7-9 22:14:40

很喜欢楼主介绍的内容和风格,希望继续。之前读书时构想过类似的产品,最终没有动手,很是遗憾,希望楼主的产品能带感兴趣的坛友一路走到实现。

mcu_lover 发表于 2020-7-10 21:35:00

cooltommy 发表于 2020-7-9 22:14
很喜欢楼主介绍的内容和风格,希望继续。之前读书时构想过类似的产品,最终没有动手,很是遗憾,希望楼主的 ...

感谢。这个过程很比较长,希望你能得到想了解的点。互相交流。
页: [1]
查看完整版本: HMI文本显示器(2) 设计器 之文本字体绘制