硬汉嵌入式论坛

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

[emWin] 分享一个emWin中不同字体混合显示在一行并居中的方法

[复制链接]

9

主题

113

回帖

145

积分

初级会员

积分
145
发表于 2018-3-9 14:03:10 | 显示全部楼层 |阅读模式

效果如下(红色箭头所指):
clipboard.png
file:///C:/Users/Administrator/AppData/Local/YNote/data/yanchao7788_neo@163.com/fe941fff813f47f09c1681558816daec/clipboard.png

“25”为22像素,其它字符为14像素;

代码如下:
void DispProgressInDay(WM_HWIN hWin, int x, int y, int curretDay, int totalDay)
{
    char strCurrDay[4];
    char strTotalDay[4];
    int totalStrLen = 0;
    int startPosx = 0;

    sprintf(strCurrDay, "%d", curretDay);
    sprintf(strTotalDay, "%d", totalDay);

    GUI_SetFont(TEXT_SIZE_14);
    totalStrLen += GUI_GetStringDistX(strTotalDay);
    totalStrLen += GUI_GetStringDistX("\xe7\xac\xac/\xe5\xa4\xa9"); // 第/天
    GUI_SetFont(TEXT_SIZE_22);
    totalStrLen += GUI_GetStringDistX(strCurrDay);

    startPosx = (WM_GetWindowSizeX(hWin) - totalStrLen) >> 1;

    GUI_SetTextMode(GUI_TEXTMODE_TRANS);
    GUI_SetColor(0xFFFFFF);

    GUI_SetFont(TEXT_SIZE_14);
    GUI_DispStringAt("\xe7\xac\xac", startPosx, 133);   // 第
    GUI_GotoY(y - 7);                // 7这个值为两种字体的高度差。此处使得两种字体显示时能靠下平齐
    GUI_SetFont(TEXT_SIZE_22);
    GUI_DispString(strCurrDay);
    GUI_GotoY(y);
    GUI_SetFont(TEXT_SIZE_14);
    GUI_DispChar('/');
    GUI_DispString(strTotalDay);
    GUI_DispString("\xe5\xa4\xa9");     // 天
}

评分

参与人数 1金币 +50 收起 理由
eric2013 + 50 赞一个!

查看全部评分

回复

使用道具 举报

22

主题

128

回帖

194

积分

初级会员

积分
194
发表于 2018-3-9 14:28:37 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115802
QQ
发表于 2018-3-9 16:26:45 | 显示全部楼层
非常感谢楼主分享。
回复

使用道具 举报

10

主题

690

回帖

720

积分

金牌会员

积分
720
发表于 2018-3-9 17:49:50 | 显示全部楼层
谢谢分享。。。。。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-19 14:50 , Processed in 0.307280 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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