OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12717|回复: 17

emWin IconView 文本不能显示在图标之下

[复制链接]

18

主题

323

帖子

1

精华

高级会员

Rank: 4

积分
935
金钱
935
注册时间
2017-12-11
在线时间
196 小时
发表于 2018-2-20 14:22:24 | 显示全部楼层 |阅读模式
1金钱
emWin IconView 文本不能显示在图标之下;;
=================================;
ICONVIEW_SetIconAlign(hWin, ICONVIEW_IA_HCENTER|ICONVIEW_IA_TOP);
;;使用了对齐设置, 为什么还是不行;

;
EMWIN 版 本 : 5.28;
;
如果不在桌面窗口, 就是可以的,
但我看了安富莱, 神舟, 火哥的综合例程, 都是在桌面, 而且安富莱, 和火哥都是5.28的版本, 原子哥是自已写的;
;
但是把ICONVIEW显示在桌面却只能这样;


捕获.PNG

最佳答案

查看完整内容[请看2#楼]

ListView小工具的大小设定,一定得大于位图像素
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

16

主题

339

帖子

0

精华

高级会员

Rank: 4

积分
826
金钱
826
注册时间
2017-6-18
在线时间
163 小时
发表于 2018-2-20 14:22:25 来自手机 | 显示全部楼层
ListView小工具的大小设定,一定得大于位图像素
回复

使用道具 举报

18

主题

323

帖子

1

精华

高级会员

Rank: 4

积分
935
金钱
935
注册时间
2017-12-11
在线时间
196 小时
 楼主| 发表于 2018-2-20 14:24:56 | 显示全部楼层
本帖最后由 wlq390934605 于 2018-2-20 14:32 编辑

====================================;
安富莱是这样写的;;
====================================;
        /*在指定位置创建指定尺寸的ICONVIEW 小工具*/
        hWin = ICONVIEW_CreateEx(ICONVIEW_TBorder,                                         /* 小工具的最左像素(在父坐标中)*/
                                                     ICONVIEW_LBorder,                                         /* 小工具的最上像素(在父坐标中)*/
                                                         ICONVIEW_HNum * ICONVIEW_Width,    /* 小工具的水平尺寸(单位:像素)*/
                                                         ICONVIEW_VNum * ICONVIEW_Height,         /* 小工具的垂直尺寸(单位:像素)*/
                                 WM_HBKWIN,                                         /* 父窗口的句柄。如果为0 ,则新小工具将成为桌面(顶级窗口)的子窗口 */
                                                         WM_CF_SHOW | WM_CF_HASTRANS,       /* 窗口创建标记。为使小工具立即可见,通常使用 WM_CF_SHOW */
                                 0,//ICONVIEW_CF_AUTOSCROLLBAR_V,         /* 默认是0,如果不够现实可设置增减垂直滚动条 */
                                                         GUI_ID_ICONVIEW0,                                 /* 小工具的窗口ID */
                                                         ICONVIEW_Width,                                     /* 图标的水平尺寸 */
                                                         ICONVIEW_Height - ICONVIEW_YSpace);/* 图标的垂直尺寸 */
        
        
    /* 如果显示屏中装不下这么多的图标,加下拉滚动条 */
        if(ICONVIEW_VNum * ICONVIEW_HNum < ICONVIEW_ImagNum )
        {
                SCROLLBAR_SetWidth(SCROLLBAR_CreateAttached(hWin,SCROLLBAR_CF_VERTICAL),16);
        }
        
        /* 向ICONVIEW 小工具添加新图标 */
        for (i = 0; i < GUI_COUNTOF(_aBitmapItem); i++)
        {
               
                ICONVIEW_AddBitmapItem(hWin, _aBitmapItem.pBitmap, _aBitmapItem.pText);
        }
        
        /* 设置小工具的背景色 32 位颜色值的前8 位可用于alpha混合处理效果*/
        ICONVIEW_SetBkColor(hWin, ICONVIEW_CI_SEL, GUI_WHITE | 0x80000000);
        
        /* 设置字体 */
        ICONVIEW_SetFont(hWin, &GUI_Font16B_ASCII);
        
        /* 设置图标在x 或y 方向上的间距。*/
        ICONVIEW_SetSpace(hWin, GUI_COORD_Y, ICONVIEW_YSpace);
        
        /* 设置对齐方式 在5.22版本中最新加入的 */
        ICONVIEW_SetIconAlign(hWin, ICONVIEW_IA_HCENTER|ICONVIEW_IA_TOP);



回复

使用道具 举报

18

主题

323

帖子

1

精华

高级会员

Rank: 4

积分
935
金钱
935
注册时间
2017-12-11
在线时间
196 小时
 楼主| 发表于 2018-2-20 14:26:36 | 显示全部楼层
====================================;
我也是这样写的;        (一模一样, 而且都是在桌面窗口);
====================================;
;
  hWin = ICONVIEW_CreateEx(0, 0,
                        800, 480,    //ICONVIEW 尺寸
                                        WM_HBKWIN,        //窗口句柄
                                        WM_CF_SHOW | WM_CF_HASTRANS,    //创建立即显示 | 透明
                                        0,                //扩展标志
                                        ID_ICONVIEW_0,
                                        64, 64);          //64x64 像素图标

    ICONVIEW_EnableStreamAuto();            //IconView 流位图显示 使能

        hItem = hWin;

//        ICONVIEW_SetBkColor(hItem, ICONVIEW_CI_BK, GUI_MAKE_ALPHA(0xFF, GUI_WHITE));  //ICONVIEW 控件背景色
        ICONVIEW_SetBkColor(hItem, ICONVIEW_CI_SEL, GUI_MAKE_COLOR(GUI_ORANGE)); //ICONVIEW 选中目标景色        
        ICONVIEW_SetFrame(hItem, GUI_COORD_X, 40);    //图标至水平边框间距
        ICONVIEW_SetFrame(hItem, GUI_COORD_Y, 40);
        ICONVIEW_SetSpace(hItem, GUI_COORD_X, (unsigned int)((800-(40*2)-(8*64))/(8-1))); //图标水平空间间距
        ICONVIEW_SetSpace(hItem, GUI_COORD_Y, (unsigned int)((480-(40*2)-(4*64))/(4-1)));

        ICONVIEW_SetFont(hItem, &GUI_Font16B_ASCII);
        ICONVIEW_SetTextColor(hItem, ICONVIEW_CI_UNSEL, GUI_ORANGE);  //未选中字体顔色
        ICONVIEW_SetTextColor(hItem, ICONVIEW_CI_SEL, GUI_GREEN);
//        ICONVIEW_SetIconAlign(hItem, ICONVIEW_IA_BOTTOM);
        

    ICONVIEW_AddBitmapItem(hItem, &bmCalendar_Icon_Desktop, "Calendar");    //日历
        ICONVIEW_AddBitmapItem(hItem, &bmClock_Icon_Desktop, "Clock");          //时钟
        ICONVIEW_AddBitmapItem(hItem, &bmCompass_Icon_Desktop, "Compass");      //指南针
        ICONVIEW_AddBitmapItem(hItem, &bmEbook_Icon_Desktop, "Ebook");          //电子书
        ICONVIEW_AddBitmapItem(hItem, &bmEmill_Icon_Desktop, "Emill");          //邮箱
        ICONVIEW_AddBitmapItem(hItem, &bmFallout_Icon_Desktop, "Fallout");      //辐射
        ICONVIEW_AddBitmapItem(hItem, &bmFile_Icon_Desktop, "File");            //文件夹
        ICONVIEW_AddBitmapItem(hItem, &bmLocation_Icon_Desktop, "Location");    //位置
        ICONVIEW_AddBitmapItem(hItem, &bmMaker_Icon_Desktop, "Maker");          //创意
        ICONVIEW_AddBitmapItem(hItem, &bmMemorandum_Icon_Desktop, "Memorandum");//备忘录
        ICONVIEW_AddBitmapItem(hItem, &bmMessage_Icon_Desktop, "Message");      //短信
        ICONVIEW_AddBitmapItem(hItem, &bmMovie_Icon_Desktop, "Movie");          //电影
        ICONVIEW_AddBitmapItem(hItem, &bmMusic_Icon_Desktop, "Music");          //音乐
        ICONVIEW_AddBitmapItem(hItem, &bmNotebook_Icon_Desktop, "Notebook");    //记事本
        ICONVIEW_AddBitmapItem(hItem, &bmPalette_Icon_Desktop, "Palette");      //画板
        ICONVIEW_AddBitmapItem(hItem, &bmPhone_Icon_Desktop, "Phone");          //电话
        ICONVIEW_AddBitmapItem(hItem, &bmPhoto_Icon_Desktop, "Photo");          //图片
        ICONVIEW_AddBitmapItem(hItem, &bmReader_Icon_Desktop, "Reader");        //阅读器
        ICONVIEW_AddBitmapItem(hItem, &bmSafety_Icon_Desktop, "Safety");        //安全
        ICONVIEW_AddBitmapItem(hItem, &bmSettings_Icon_Desktop, "Settings");    //设置
        ICONVIEW_AddBitmapItem(hItem, &bmTimer_Icon_Desktop, "Timer");          //计时器
        ICONVIEW_AddBitmapItem(hItem, &bmTools_Icon_Desktop, "Tools");          //工具
        ICONVIEW_AddBitmapItem(hItem, &bmVolume_Icon_Desktop, "Volume");        //音量
        ICONVIEW_AddBitmapItem(hItem, &bmWeather_Icon_Desktop, "Weather");        //天气

        ICONVIEW_SetIconAlign(hWin, ICONVIEW_IA_HCENTER|ICONVIEW_IA_TOP);
回复

使用道具 举报

18

主题

323

帖子

1

精华

高级会员

Rank: 4

积分
935
金钱
935
注册时间
2017-12-11
在线时间
196 小时
 楼主| 发表于 2018-2-20 14:30:44 | 显示全部楼层
=========================================;
然后呢, 用显示在对话框就没有问题;
=========================================;
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
        { FRAMEWIN_CreateIndirect, "Framewin", ID_FRAMEWIN_0, 0, 0, 320, 240, 0, 0x64, 0 },
        { ICONVIEW_CreateIndirect, "Iconview", ID_ICONVIEW_0, 15, 50, 280, 140, 0, 0x00400040/*xSizeItem-ySizeItem*/, 0 },
        { TEXT_CreateIndirect, "Text", ID_TEXT_0, 15, 10, 280, 20, 0, 0x64, 0 },
};

extern GUI_CONST_STORAGE GUI_BITMAP bm01;
extern GUI_CONST_STORAGE GUI_BITMAP bm02;
extern GUI_CONST_STORAGE GUI_BITMAP bm03;
extern GUI_CONST_STORAGE GUI_BITMAP bm04;
extern GUI_CONST_STORAGE GUI_BITMAP bm05;
extern GUI_CONST_STORAGE GUI_BITMAP bm06;
extern GUI_CONST_STORAGE GUI_BITMAP bm07;
extern GUI_CONST_STORAGE GUI_BITMAP bm08;
extern GUI_CONST_STORAGE GUI_BITMAP bm09;

static void _cbDialog(WM_MESSAGE * pMsg) {
        WM_HWIN hItem;
        int     NCode;
        int     Id;

        switch (pMsg->MsgId) {
        case WM_INIT_DIALOG://初始化消息,创建窗口/控件时有效,比如在这里设置一些控件的初始参数
                hItem = pMsg->hWin;
                FRAMEWIN_SetText(hItem, "neqee.com");
                FRAMEWIN_SetFont(hItem, GUI_FONT_20_1);
                FRAMEWIN_SetTextColor(hItem, (0x00FF0000));

                hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0);
                TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
                TEXT_SetTextColor(hItem, (0x008000FF));
                TEXT_SetFont(hItem, GUI_FONT_20_1);
                TEXT_SetText(hItem, "neqee");

                hItem = WM_GetDialogItem(pMsg->hWin, ID_ICONVIEW_0);
                ICONVIEW_SetIconAlign(hItem, ICONVIEW_IA_TOP);
                ICONVIEW_SetTextColor(hItem, ICONVIEW_CI_UNSEL, GUI_BLUE);
                ICONVIEW_SetTextColor(hItem, ICONVIEW_CI_SEL, GUI_GREEN);
                ICONVIEW_SetFrame(hItem, GUI_COORD_X, 0);//设置图标到IconView边框的间距
                ICONVIEW_SetFrame(hItem, GUI_COORD_Y, 0);
                ICONVIEW_SetSpace(hItem, GUI_COORD_X, (280-64*4)/3);//设置图标和图标之间的间距
                ICONVIEW_SetSpace(hItem, GUI_COORD_Y, (140-64*2)/1);
                ICONVIEW_SetFont(hItem, GUI_FONT_16_1);
                ICONVIEW_AddBitmapItem(hItem, &bm01, "neqee");//添加图标项
                ICONVIEW_AddBitmapItem(hItem, &bm02, "SOS");
                ICONVIEW_AddBitmapItem(hItem, &bm03, "Phone");
                ICONVIEW_AddBitmapItem(hItem, &bm04, "Camera");
                ICONVIEW_AddBitmapItem(hItem, &bm05, "Email");
                ICONVIEW_AddBitmapItem(hItem, &bm06, "NoteBook");
                ICONVIEW_AddBitmapItem(hItem, &bm07, "JTV");
                ICONVIEW_AddBitmapItem(hItem, &bm08, "Dollar");
                //ICONVIEW_AddBitmapItem(hItem, &bm09, "Jobbet");
                break;
        case WM_NOTIFY_PARENT://操作触发消息处理(操作屏幕程序会跑到这里),比如点击按键、点击编辑框(任何的操作)等等......
                Id    = WM_GetId(pMsg->hWinSrc);
                NCode = pMsg->Data.v;
                switch(Id) {
                case ID_ICONVIEW_0:
                        switch(NCode) {
                        case WM_NOTIFICATION_CLICKED://点击图标
                                switch(ICONVIEW_GetSel(WM_GetDialogItem(pMsg->hWin, ID_ICONVIEW_0)))
                                {
                                case 0: TEXT_SetText(WM_GetDialogItem(pMsg->hWin, ID_TEXT_0), "neqee"); break;
                                case 1: TEXT_SetText(WM_GetDialogItem(pMsg->hWin, ID_TEXT_0), "SOS"); break;
                                case 2: TEXT_SetText(WM_GetDialogItem(pMsg->hWin, ID_TEXT_0), "Phone"); break;
                                case 3: TEXT_SetText(WM_GetDialogItem(pMsg->hWin, ID_TEXT_0), "Camera"); break;
                                case 4: TEXT_SetText(WM_GetDialogItem(pMsg->hWin, ID_TEXT_0), "Email"); break;
                                case 5: TEXT_SetText(WM_GetDialogItem(pMsg->hWin, ID_TEXT_0), "NoteBook"); break;
                                case 6: TEXT_SetText(WM_GetDialogItem(pMsg->hWin, ID_TEXT_0), "JTV"); break;
                                case 7: TEXT_SetText(WM_GetDialogItem(pMsg->hWin, ID_TEXT_0), "Dollar"); break;
                                //case 8: TEXT_SetText(WM_GetDialogItem(pMsg->hWin, ID_TEXT_0), "Jobbet"); break;
                                }
                                break;
                        case WM_NOTIFICATION_RELEASED:
                                break;
                        case WM_NOTIFICATION_MOVED_OUT:
                                break;
                        case WM_NOTIFICATION_SCROLL_CHANGED:
                                break;
                        case WM_NOTIFICATION_SEL_CHANGED:
                                break;
                        }
                        break;
                }
                break;
        default:
                WM_DefaultProc(pMsg);
                break;
        }
}

WM_HWIN CreateFramewin(void);
WM_HWIN CreateFramewin(void) {
        WM_HWIN hWin;

        hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
        return hWin;
}
捕获.PNG
回复

使用道具 举报

18

主题

323

帖子

1

精华

高级会员

Rank: 4

积分
935
金钱
935
注册时间
2017-12-11
在线时间
196 小时
 楼主| 发表于 2018-2-20 19:44:32 | 显示全部楼层
自动置顶
回复

使用道具 举报

6

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
203
金钱
203
注册时间
2013-8-15
在线时间
44 小时
发表于 2018-6-11 17:13:39 | 显示全部楼层
亲,我也遇上了ICON_VIEW的问题,请帮忙指点指点,好吗?
我现在要使用的方式是,在界面上显示转速和电量图标。这两个图标是显示在一张图片上的,图片在一个窗口中。
图标已经做成了透明ICON图标,用这个GUI_DrawBitmap(……);显示在一个纯色的、非窗口的背景上是没有问题的。
现在用窗口方式来做,让它显示在一个图片上,就不是透明的了,而成了以下图中的样子,
QQ截图20180611171206.jpg


请问楼主能提示一些解决建议吗?
回复

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2015-4-10
在线时间
25 小时
发表于 2018-6-21 13:49:41 | 显示全部楼层
请问你emwin IconView 文本不能显示在图标之下的问题解决了吗?
回复

使用道具 举报

4

主题

15

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2017-10-20
在线时间
13 小时
发表于 2018-11-4 22:22:06 | 显示全部楼层
fke888999 发表于 2018-6-21 13:49
请问你emwin IconView 文本不能显示在图标之下的问题解决了吗?

大神你的问题解决了吗:   求分享经验呀
回复

使用道具 举报

4

主题

15

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2017-10-20
在线时间
13 小时
发表于 2018-11-4 22:23:53 | 显示全部楼层
大神你的文本显示在图片里面解决了吗  怎么让他显示在图片下面
回复

使用道具 举报

23

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2015-5-30
在线时间
9 小时
发表于 2018-11-23 00:05:28 | 显示全部楼层
我也出现了这种,楼主后续怎么解决的啊???
要学的东西很多,不要慌,一步一个脚印,扎扎实实的学
回复

使用道具 举报

23

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2015-5-30
在线时间
9 小时
发表于 2018-11-23 00:07:36 | 显示全部楼层
这是我实验的,发现也是文本在图标里面,不正常
修正图标间距.jpg
要学的东西很多,不要慌,一步一个脚印,扎扎实实的学
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2019-2-3
在线时间
16 小时
发表于 2019-4-10 20:44:11 | 显示全部楼层
是可以解决的
IMG_20190409_225729.jpg
回复

使用道具 举报

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2015-4-13
在线时间
11 小时
发表于 2019-10-22 15:18:12 | 显示全部楼层
本帖最后由 544571980@qq.com 于 2019-10-22 15:20 编辑
wlq390934605 发表于 2018-2-20 14:30
=========================================;
然后呢, 用显示在对话框就没有问题;
===================== ...

楼主您好,该例子在创建的时候,0x004000040为单个icon的大小,64*64,可以放宽长度的数值,改成80*64,底下的text的就可以显示了。即0x00500040。 如果Text长度长,64个像素显示不全的话,应该也是可以扩展icon的长度,改成80*80,即0x00500050。
回复

使用道具 举报

4

主题

78

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
394
金钱
394
注册时间
2019-12-5
在线时间
40 小时
发表于 2020-3-20 17:22:13 | 显示全部楼层

你好 图标点击透明色怎么设置呢?
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

4

主题

78

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
394
金钱
394
注册时间
2019-12-5
在线时间
40 小时
发表于 2020-3-20 17:23:28 | 显示全部楼层
weixiao123 发表于 2018-11-23 00:07
这是我实验的,发现也是文本在图标里面,不正常

要么把素材底下切得图片长一些  要么就把图框的坐标做的长一些  预留出来汉字显示的位置
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

4

主题

78

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
394
金钱
394
注册时间
2019-12-5
在线时间
40 小时
发表于 2020-3-20 17:23:55 | 显示全部楼层
weixiao123 发表于 2018-11-23 00:07
这是我实验的,发现也是文本在图标里面,不正常

顺便想问下  图标点击透明色怎么设置的呢
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

23

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2015-5-30
在线时间
9 小时
发表于 2022-11-16 15:33:49 | 显示全部楼层
李大心脏 发表于 2020-3-20 17:23
顺便想问下  图标点击透明色怎么设置的呢

图片取模,icon要用png格式的
要学的东西很多,不要慌,一步一个脚印,扎扎实实的学
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 10:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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