硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1277|回复: 12
收起左侧

[emWin] EMWIN改成UTF-8编码后,列表中文内容居中对齐发生错位

[复制链接]

98

主题

340

回帖

634

积分

金牌会员

积分
634
发表于 2022-7-13 14:03:16 | 显示全部楼层 |阅读模式
用的12864的液晶屏,EMWIN用的外部中文字库芯片,之前程序C文件一直用的ASCII编码方式,显示对齐都没问题。
今天把含有中文的C文件都改成了UTF-8的编码方式,在初始化GUI之后也调用了函数GUI_UC_SetEncodeUTF8();来使能UTF-8编码,最后在GUIUSER_DispChar函数中将输入字符转换成GB2312编码格式。
这么修改后遇到一个奇怪的问题,本来列表中设置居中的内容都向右偏移了大约一个半汉字的距离。
于是做了以下测试:
1、列表都设置成左对齐的方式              ->   显示内容全部靠列表左侧,显示没问题;
2、列表设置成居中对齐                        ->   显示内容全部由居中位置向右侧偏移一个半汉字的距离;
3、列表设置成右对齐                           ->   所有内容均移除了屏幕可显示的范围;
5、把列表其中一行内容全部换成数字     ->   全部是数字的这一行所有对齐方式都可以正常显示;
6、把图形库由532更改成522版本,问题一样;
有点儿疑惑了,请教硬汉哥,这可能是哪儿的问题呢?
QQ截图20220713135838.png QQ截图20220713135815.png

列表创建

列表创建

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107145
QQ
发表于 2022-7-13 15:10:08 | 显示全部楼层
帮你测试了下,正常,我用的是6.16
image.png
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
 楼主| 发表于 2022-7-13 16:38:42 | 显示全部楼层
eric2013 发表于 2022-7-13 15:10
帮你测试了下,正常,我用的是6.16

请问你的6.16是从哪儿下载的?可否分享一下。我的是KEIL530版本,F429平台,跑的OS系统。官网最新的还是在532版本,我在KEIL和CUBE安装路径下也没找到比较新的版本。我在论坛里面找到下面这2个链接,下载安装后里面只有3个库文件,且试了一下,好像也没法用,花屏。

QQ截图20220713163330.png
QQ截图20220713163714.png

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107145
QQ
发表于 2022-7-13 16:47:27 | 显示全部楼层
1、单片机版emWin6.16软件包来了,可以完美配合最新版AppWizard了
https://www.armbbs.cn/forum.php?mod=viewthread&tid=107080

2、例子是从我们V7里面下载了一个裸机版的emWin6.x,显示了个listview,用FontCvt生成的小字库。
https://www.armbbs.cn/forum.php?mod=viewthread&tid=98429


回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
 楼主| 发表于 2022-7-14 10:09:41 | 显示全部楼层
整体迁移到了6.16版本上,但问题依旧,居中显示时若有汉字还是会整体向右偏移。
以为居中显示时多加了空格,但是通过函数LISTVIEW_GetItemText读回来的内容并没有多余的空格。
如果哪种对齐方式都向右偏移还说的过去,但无论包含中文与否,左对齐功能都可以正常左对齐显示,只要包含中文,就会向右偏移,也是太奇怪了。
先做个遗留问题,后期有精力再回过头查查。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107145
QQ
发表于 2022-7-14 10:37:56 | 显示全部楼层
云琴箫龙 发表于 2022-7-14 10:09
整体迁移到了6.16版本上,但问题依旧,居中显示时若有汉字还是会整体向右偏移。
以为居中显示时多加了空格 ...

那现在的区别主要是底层的移植方式了,我这个是显存块的移植方式。

另外还有一点,早期的时候(印象不深了),你有时间了可以试试,就是UTF8编码和GBK编码混用的时候,GBK我是采用的UCGUI那个时代的玩法,混用后很多奇怪问题,不知道你这边是否也有这种问题。

回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
 楼主| 发表于 2022-7-14 10:58:36 | 显示全部楼层
eric2013 发表于 2022-7-14 10:37
那现在的区别主要是底层的移植方式了,我这个是显存块的移植方式。

另外还有一点,早期的时候(印象不 ...

我底层的显示也是先刷到一块儿内存中,然后把这块儿内存整体刷到屏幕上。
目前我只把自己写的.C和.H文件都转换成了UTF-8的格式,其它的系统自带的以及EMWIN的那些头文件,还是用的默认的编码方式。不知道这种算不算编码混用?
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
 楼主| 发表于 2022-7-14 11:00:24 | 显示全部楼层
eric2013 发表于 2022-7-14 10:37
那现在的区别主要是底层的移植方式了,我这个是显存块的移植方式。

另外还有一点,早期的时候(印象不 ...

底层中文显示,好像就是移植的你UCGUI那个时代的那种自定义字体的方法......
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
 楼主| 发表于 2022-7-14 11:05:10 | 显示全部楼层
eric2013 发表于 2022-7-14 10:37
那现在的区别主要是底层的移植方式了,我这个是显存块的移植方式。

另外还有一点,早期的时候(印象不 ...

QQ截图20220714110423.png
就是参照这种方法移植的中文显示
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107145
QQ
发表于 2022-7-15 00:16:48 | 显示全部楼层
云琴箫龙 发表于 2022-7-14 11:05
就是参照这种方法移植的中文显示

不知道你那边把这个所有GBK相关代码和文件都删掉能正常不。
回复

使用道具 举报

7

主题

26

回帖

47

积分

新手上路

积分
47
发表于 2022-7-19 12:47:27 来自手机 | 显示全部楼层
可能是中文汉字字数统计不准确,所以居中就有问题了
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
 楼主| 发表于 2022-7-26 17:40:57 | 显示全部楼层
eric2013 发表于 2022-7-15 00:16
不知道你那边把这个所有GBK相关代码和文件都删掉能正常不。

今天试着把工程所有的文件都转换成UTF-8的格式后,问题依旧。
后来又参考“C 文件格式的汉字生成和实现( Unicode编码)”章节,不用自定义字体的方式后,就可以正常居中显示了,看来问题可能在自定义字体这里。
有空再研究一下为啥,最后实在没办法,就只能放弃外部字库芯片的方案了。反正SPI FLASH空间还够,改用XBF全字库的方式也可以。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107145
QQ
发表于 2022-7-28 09:24:42 | 显示全部楼层
云琴箫龙 发表于 2022-7-26 17:40
今天试着把工程所有的文件都转换成UTF-8的格式后,问题依旧。
后来又参考“C 文件格式的汉字生成和实现 ...

好的,估计那里还有点问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-20 12:07 , Processed in 0.206150 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表