硬汉嵌入式论坛

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

[emWin] 用set_skin绘制DROPDOWN,ZAI ,按钮去取不显示文字

[复制链接]

36

主题

142

回帖

250

积分

高级会员

积分
250
发表于 2019-8-17 16:00:59 | 显示全部楼层 |阅读模式
WIDGET_ITEM_DRAW_TEXT
将在下拉小工具的按钮区域绘制当前所选字符串的文本。通常在按钮区域的左侧绘制文本。
WIDGET_ITEM_DRAW_INFO 结构的内容:
(请参阅 WIDGET_ITEM_DRAW_BACKGROUND)  

在参考手册找到了这个 但是不会用啊
case WIDGET_ITEM_DRAW_TEXT:
break ;里面怎么写呢
回复

使用道具 举报

36

主题

142

回帖

250

积分

高级会员

积分
250
 楼主| 发表于 2019-8-17 16:18:38 | 显示全部楼层
打错字了 应该是最上面的按钮区,展开时 展开显示没问题
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2019-8-19 09:11:04 | 显示全部楼层
按钮去取  是什么意思,按钮去触摸?
回复

使用道具 举报

36

主题

142

回帖

250

积分

高级会员

积分
250
 楼主| 发表于 2019-8-19 09:17:31 | 显示全部楼层
eric2013 发表于 2019-8-19 09:11
按钮去取  是什么意思,按钮去触摸?

就是和按钮一栏不显示文字  也就下拉列表最上面栏
回复

使用道具 举报

36

主题

142

回帖

250

积分

高级会员

积分
250
 楼主| 发表于 2019-8-19 09:18:22 | 显示全部楼层
eric2013 发表于 2019-8-19 09:11
按钮去取  是什么意思,按钮去触摸?

按钮区 那一栏
回复

使用道具 举报

36

主题

142

回帖

250

积分

高级会员

积分
250
 楼主| 发表于 2019-8-19 09:36:13 | 显示全部楼层
eric2013 发表于 2019-8-19 09:11
按钮去取  是什么意思,按钮去触摸?

谢谢硬汉 ,问题解决。把case WIDGET_ITEM_DRAW_TEXT:break;这注释掉就可以int _DrawSkin_DROPDOWN(const WIDGET_ITEM_DRAW_INFO * pDrawItemInfo)
{
    const GUI_POINT aPoints[] = {
    { 222 * 6, 14 * 6},
    { 242 * 6, 14 * 6},
    { 232 * 6, 28 * 6}
    };
    /* 设置画笔粗细 */
    GUI_SetPenSize(1);
    /* 使能高分辨率 */
    GUI_AA_EnableHiRes();
    /* 抗锯齿因子选择 6 */
    GUI_AA_SetFactor(6);
    switch (pDrawItemInfo->Cmd)
    {
    case WIDGET_ITEM_DRAW_BACKGROUND:
        GUI_SetColor(GUI_WHITE);
        GUI_FillRect(pDrawItemInfo->x0, pDrawItemInfo->y0, pDrawItemInfo->x1, pDrawItemInfo->y1);
        GUI_SetColor(GUI_BLACK);
        GUI_DrawRect(pDrawItemInfo->x0, pDrawItemInfo->y0, pDrawItemInfo->x1, pDrawItemInfo->y1);
        GUI_SetColor(0xAAAAAA);
        GUI_DrawVLine(pDrawItemInfo->x0 + 204 , pDrawItemInfo->y0, pDrawItemInfo->y1);
        GUI_SetColor(GUI_BLACK);
    break;
    case WIDGET_ITEM_DRAW_ARROW:
        GUI_SetColor(GUI_BLACK);
        GUI_AA_FillPolygon(aPoints, GUI_COUNTOF(aPoints), pDrawItemInfo->x0 * 6, pDrawItemInfo->y0 * 6);
        GUI_SetColor(GUI_BLACK);
    break;
   /* case WIDGET_ITEM_DRAW_TEXT:
    break;
   case WIDGET_ITEM_DRAW_FOCUS:
        if(WM_GetFocussedWindow() == pDrawItemInfo->hWin)
        {
            GUI_SetColor(GUI_WHITE);
            GUI_FillRect(pDrawItemInfo->x0, pDrawItemInfo->y0, pDrawItemInfo->x1, pDrawItemInfo->y1);
            GUI_SetColor(GUI_BLUE);
            GUI_DrawRect(pDrawItemInfo->x0, pDrawItemInfo->y0, pDrawItemInfo->x1, pDrawItemInfo->y1);
            GUI_DrawVLine(pDrawItemInfo->x0 + 204 , pDrawItemInfo->y0, pDrawItemInfo->y1);
        }
       break;
    case WIDGET_ITEM_DRAW_TEXT:
        break;*/
    default:
        return DROPDOWN_DrawSkinFlex(pDrawItemInfo);
    break;
    }
    return 0;
} 因为美工设计的就是按钮宽 箭头小 所以需要自己绘制
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2019-8-19 09:45:48 | 显示全部楼层
直接调用GUI_DispString之类的函数显示就行,另外就是单独设置下字体的颜色
回复

使用道具 举报

36

主题

142

回帖

250

积分

高级会员

积分
250
 楼主| 发表于 2019-8-19 12:51:48 | 显示全部楼层
eric2013 发表于 2019-8-19 09:45
直接调用GUI_DispString之类的函数显示就行,另外就是单独设置下字体的颜色

感谢硬汉 ,这样也可以。
case WIDGET_ITEM_DRAW_TEXT:
        GUI_SetColor(GUI_BLACK);
        GUI_SetFont(&GUI_Font_app20);
        GUI_SetTextMode(GUI_TM_TRANS);
        GUI_SetTextAlign(GUI_TA_VCENTER);
            GUI_DispStringAt( aTable[DROPDOWN_GetSel (pDrawItemInfo->hWin)],pDrawItemInfo->x0 + 10, pDrawItemInfo->y1/2);
break;
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2019-8-20 08:49:20 | 显示全部楼层
老虎的菜 发表于 2019-8-19 12:51
感谢硬汉 ,这样也可以。
case WIDGET_ITEM_DRAW_TEXT:
        GUI_SetColor(GUI_BLACK);

好的,解决了就好。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-18 05:06 , Processed in 0.243529 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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