1、查看Halcon帮助文档
养成良好的查资料习惯,可以实现事半功倍。
1.1 Halcon12和Halcon20不同版本的帮助有所不同
在Halcon12中,有set_font和set_display_font两个算子,其中set_display_font是本地函数形式,所以最终的实现算子为set_font.
按照不同的系统环境下,使用方法略有不同:
不同的系统下使用的方法不同,原本以为比较简单,直接按照文档的example来设定就行,但是win下的字体比较多,这种方法可行,其他的系统下未必有指定的Font类型,所以我在Linux下一直提示的Font类型错误;
再翻一下最新版Halcon20版本的文档
新版介绍简单了很多,如果只修改字体,直接使用set_system(‘default_font’,Font)设置默认字体就行,这里还进行提示,根据不同的系统,获取支持的字体进行设置,最后给出了比较简洁的example做参考。
1.2在win和LINUX下用Qt实现字体修改
根据之前的帮助文档,可以在Qt下实现字体修改
//设定Halcon窗口文字字体HTuple hv_OS;GetSystem("operating_system",&hv_OS);if(hv_OS.TupleSubstr(0,2) == HTuple("Win")){//方法一:直接设置Font参数QString Font_win = "-Arial-10-*-1-*-*-1-";QByteArray ba = Font_win.toLocal8Bit();const char *string = ba.data();SetFont(hv_WindowHandleCurrent,string);}else if(hv_OS.TupleSubstr(0,4) == HTuple("Linux")){//方法二:获取系统下的字体,选择第一个加载使用HTuple hv_Font,hv_FontWithSize;QueryFont(hv_WindowHandleCurrent,&hv_Font);hv_FontWithSize = HTuple(hv_Font[0]) + "-40";SetFont(hv_WindowHandleCurrent,hv_FontWithSize);}
由于在Linux下设置了好几种字体都显示错误,所以直接使用第二种方法,获取Linux支持的字体进行设置。
根据上述方法设定的效果如下
1.3相关实现Demo程序
Halcon窗口显示文字字体修改