硬汉嵌入式论坛

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

[emWin] ICONVIEW显示不透明

[复制链接]

39

主题

127

回帖

244

积分

高级会员

积分
244
发表于 2016-10-6 11:48:46 | 显示全部楼层 |阅读模式
1.jpg 2.jpg 3.png 4.png #define ID_FRAMEWIN_0    (GUI_ID_USER + 0x00)
#define ID_ICONVIEW_0    (GUI_ID_USER + 0x07)
#define ID_ICONVIEW_1    (GUI_ID_USER + 0x08)
#define ID_ICONVIEW_2    (GUI_ID_USER + 0x0B)
#define ID_ICONVIEW_3    (GUI_ID_USER + 0x0C)
#define ID_ICONVIEW_4    (GUI_ID_USER + 0x0D)

#define ID_ICONVIEW_0_IMAGE_0    0x00
#define ID_ICONVIEW_1_IMAGE_0    0x01
#define ID_ICONVIEW_2_IMAGE_0    0x02
#define ID_ICONVIEW_3_IMAGE_0    0x03
#define ID_ICONVIEW_4_IMAGE_0    0x04
#define ID_ICONVIEW_4_IMAGE_1    0x05

#define ID_BUTTON_0    (GUI_ID_USER + 0x0F)
#define ID_BUTTON_1    (GUI_ID_USER + 0x10)
#define ID_BUTTON_2    (GUI_ID_USER + 0x11)
#define ID_BUTTON_3    (GUI_ID_USER + 0x12)
#define ID_BUTTON_4    (GUI_ID_USER + 0x13)
#define ID_BUTTON_5    (GUI_ID_USER + 0x15)

#define ID_EDIT_0    (GUI_ID_USER + 0x16)
#define ID_EDIT_1    (GUI_ID_USER + 0x17)
#define ID_EDIT_2    (GUI_ID_USER + 0x18)
#define ID_EDIT_3    (GUI_ID_USER + 0x19)
#define ID_EDIT_4    (GUI_ID_USER + 0x1A)


GUI_BITMAP buttonbmp_tab[3];
//typedef struct{
//    const GUI_BITMAP *pBitmap;
//    const char *pText;
//}BITMAP_ITEM;

//static const BITMAP_ITEM _aBitmapItem[]={
//    { &bmWF_Sanre,"_Sanre"   }
//}

static GUI_CONST_STORAGE unsigned short _acWF_Sanre[] = {

};

GUI_CONST_STORAGE GUI_BITMAP bmWF_Sanre= {
    64, // xSize
  64, // ySize
  256, // BytesPerLine
  32, // BitsPerPixel
  (unsigned char *)_acWF_Sanre,  // Pointer to picture data
  NULL,  // Pointer to palette
  GUI_DRAW_BMP8888
};


static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  { FRAMEWIN_CreateIndirect, "Framewin", ID_FRAMEWIN_0, 0, 0, 240, 320, 0, 0x0, 0 },
  { ICONVIEW_CreateIndirect, "Iconview", ID_ICONVIEW_0, 140, 106, 60, 60, 0, 0x003c003c, 0 },
  { ICONVIEW_CreateIndirect, "Iconview", ID_ICONVIEW_1, 40, 212, 60, 60, 0, 0x003c003c, 0 },
  { ICONVIEW_CreateIndirect, "Iconview", ID_ICONVIEW_2, 140, 1, 60, 60, 0, 0x003c003c, 0 },
  { ICONVIEW_CreateIndirect, "Iconview", ID_ICONVIEW_3, 40, 106, 60, 60, 0, 0x003c003c, 0 },
  { ICONVIEW_CreateIndirect, "Iconview", ID_ICONVIEW_4, 40, 1, 60, 60, 0, 0x003c003c, 0 },
    { BUTTON_CreateIndirect, "Button", ID_BUTTON_0, 148, 70, 48, 28, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button", ID_BUTTON_1, 48, 70, 48, 28, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button", ID_BUTTON_2, 48, 180, 48, 28, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button", ID_BUTTON_3, 148, 180, 48, 28, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button", ID_BUTTON_4, 48, 285, 48, 28, 0, 0x0, 0 },
    { BUTTON_CreateIndirect, "Button", ID_BUTTON_5, 180, 265, 48, 48, 0, 0x0, 0 },
    { EDIT_CreateIndirect, "Edit", ID_EDIT_0, 5, 70, 40, 28, 0, 0x64, 0 },
  { EDIT_CreateIndirect, "Edit", ID_EDIT_1, 105, 70, 40, 28, 0, 0x64, 0 },
  { EDIT_CreateIndirect, "Edit", ID_EDIT_2, 1, 180, 45, 28, 0, 0x64, 0 },
  { EDIT_CreateIndirect, "Edit", ID_EDIT_3, 100, 180, 45, 28, 0, 0x64, 0 },
  { EDIT_CreateIndirect, "Edit", ID_EDIT_4, 1, 285, 45, 28, 0, 0x64, 0 },
};

static void _cbDialog(WM_MESSAGE * pMsg) {
  WM_HWIN hItem;
  int     NCode;
  int     Id;
    WM_HWIN hwin;
    static u8 fengflag=0;
  // USER START (Optionally insert additional variables)
  // USER END

  switch (pMsg->MsgId) {
//    case    WM_PAINT:
//  GUI_SetBkColor(GUI_WHITE);
//    GUI_Clear();
  case WM_INIT_DIALOG:
    //
    // Initialization of 'Framewin'
    //
    hItem = pMsg->hWin;
    FRAMEWIN_SetTitleVis(hItem, 0);
    //创建图表0
      hwin = ICONVIEW_CreateEx(40, 1,64, 64,
                                                                     hItem, WM_CF_SHOW | WM_CF_HASTRANS,
                                                                     0, GUI_ID_ICONVIEW0, 64, 64);
     ICONVIEW_AddBitmapItem(hwin, &bmWF_Sanre, "");
//     ICONVIEW_SetBkColor(hwin, ICONVIEW_CI_SEL, GUI_WHITE | 0x40000000);
      //创建图表1
     hwin = ICONVIEW_CreateEx(140, 1,64, 64,
                                                                     hItem, WM_CF_SHOW | WM_CF_HASTRANS,
                                                                     0, GUI_ID_ICONVIEW0, 64, 64);
     ICONVIEW_AddBitmapItem(hwin, &bmWF_Sanre, "");
//     ICONVIEW_SetBkColor(hwin, ICONVIEW_CI_SEL, GUI_WHITE | 0x40000000);
    //创建图表2
     hwin = ICONVIEW_CreateEx(40, 106,64, 64,
                                                                     hItem, WM_CF_SHOW | WM_CF_HASTRANS,
                                                                     0, GUI_ID_ICONVIEW0, 64, 64);
     ICONVIEW_AddBitmapItem(hwin, &bmWF_Sanre, "");
//     ICONVIEW_SetBkColor(hwin, ICONVIEW_CI_SEL, GUI_WHITE | 0x40000000);
     //创建图表3
     hwin = ICONVIEW_CreateEx(140, 106,64, 64,
                                                                     hItem, WM_CF_SHOW | WM_CF_HASTRANS,
                                                                     0, GUI_ID_ICONVIEW0, 60, 60);
     ICONVIEW_AddBitmapItem(hwin, &bmWF_Sanre, "");
     ICONVIEW_SetBkColor(hwin, ICONVIEW_CI_SEL, GUI_WHITE | 0x40000000);
     //创建图表4
     hwin = ICONVIEW_CreateEx(40, 212,64, 64,
                                                                     hItem, WM_CF_SHOW | WM_CF_HASTRANS,
                                                                     0, GUI_ID_ICONVIEW0, 64, 64);
     ICONVIEW_AddBitmapItem(hwin, &bmWF_Sanre, "");
     ICONVIEW_SetBkColor(hwin, ICONVIEW_CI_SEL, GUI_WHITE | 0x40000000);
   
        //初始化BUTTON0
    hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);//得到小窗口的句柄
    BUTTON_SetBitmapEx(hItem,0,&buttonbmp_tab[0],0,0);//设置显示指定按钮时要使用的位图
      BUTTON_SetText(hItem, "");
     
        //初始化BUTTON1
    hItem= WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);//得到小窗口的句柄
    BUTTON_SetBitmapEx(hItem,0,&buttonbmp_tab[0],0,0);//设置显示指定按钮时要使用的位图
        BUTTON_SetText(hItem, "");
        //初始化BUTTON2
    hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2);//得到小窗口的句柄
    BUTTON_SetBitmapEx(hItem,0,&buttonbmp_tab[0],0,0);//设置显示指定按钮时要使用的位图
        BUTTON_SetText(hItem, "");      
        //初始化BUTTON3
    hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_3);//得到小窗口的句柄
    BUTTON_SetBitmapEx(hItem,0,&buttonbmp_tab[0],0,0);//设置显示指定按钮时要使用的位图
        BUTTON_SetText(hItem, "");  
        //初始化BUTTON4
    hItem= WM_GetDialogItem(pMsg->hWin, ID_BUTTON_4);//得到小窗口的句柄
    BUTTON_SetBitmapEx(hItem,0,&buttonbmp_tab[0],0,0);//设置显示指定按钮时要使用的位图
        BUTTON_SetText(hItem, "");
        //初始化BUTTON5
    hItem= WM_GetDialogItem(pMsg->hWin, ID_BUTTON_5);//得到小窗口的句柄
    BUTTON_SetBitmapEx(hItem,0,&buttonbmp_tab[2],0,0);//设置显示指定按钮时要使用的位图
        BUTTON_SetText(hItem, "");

本来是想透明的,但现在连一个完整的图片已经无法显示啦。这是什么原因啊?
5.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115723
QQ
发表于 2016-10-6 14:43:57 | 显示全部楼层
对话框资源列表已经创建很多ICONVIEW控件了,不需要再使用WM_ININ_DIALOG里面重复创建了 ICONVIEW_CreateEx
回复

使用道具 举报

39

主题

127

回帖

244

积分

高级会员

积分
244
 楼主| 发表于 2016-10-6 15:45:19 | 显示全部楼层

回 eric2013 的帖子

eric2013:对话框资源列表已经创建很多ICONVIEW控件了,不需要再使用WM_ININ_DIALOG里面重复创建了 ICONVIEW_CreateEx (2016-10-06 14:43) 
我按照步骤找一张带透明的PNG的图片,使用iconworkshop转成32位的bmp格式,再利用BmpCvt转换成.C文件(SAVE AS: Ture color with alpha channel),利用      hwin = ICONVIEW_CreateEx(85, 60,64, 64,  hItem, WM_CF_SHOW | WM_CF_HASTRANS, 0, GUI_ID_ICONVIEW0, 64, 64);
ICONVIEW_AddBitmapItem(hwin, &bmjiare, "");
ICONVIEW_SetBkColor(hwin, ICONVIEW_CI_SEL, GUI_WHITE | 0x40000000);。
最后还是有那个白色背景啊?
回复

使用道具 举报

39

主题

127

回帖

244

积分

高级会员

积分
244
 楼主| 发表于 2016-10-6 16:09:17 | 显示全部楼层

回 eric2013 的帖子

eric2013:对话框资源列表已经创建很多ICONVIEW控件了,不需要再使用WM_ININ_DIALOG里面重复创建了 ICONVIEW_CreateEx (2016-10-06 14:43) 
找到原因啦,就是你上面叙述的。我把资源表中创建的ICONVIEW控件注释掉就可以正常显示啦。
1、为什么注释掉WM_ININ_DIALOG里面的 ICONVIEW_CreateE就不可以了啦?(下载以后是黑屏)
2、为什么点击图标之后那个白色背景也显现出来啦?(是聚焦吗?)
3、加载图标可以用IMAGE、ICONVIEW、BUTTON,这三个中那一个更简单(只是为了显示不做触摸响应其他事件)?
4、显示位图使用GUI_DrawBitmapEx()函数,但是不知道如何在Framewin窗口中使用(只会在没有Framewin窗口中使用),是在WM_PAINT中重绘吗?还是有其他的方式。
5、谢谢您[s:143]
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115723
QQ
发表于 2016-10-7 10:25:35 | 显示全部楼层

回 坚持再坚持 的帖子

坚持再坚持:找到原因啦,就是你上面叙述的。我把资源表中创建的ICONVIEW控件注释掉就可以正常显示啦。
1、为什么注释掉WM_ININ_DIALOG里面的 ICONVIEW_CreateE就不可以了啦?(下载以后是黑屏)
2、为什么点击图标之后那个白色背景也显现出来啦?(是聚焦吗?)
3、加载图标可以用IMAGE、ICO .. (2016-10-06 16:09) 
1. 估计是把之前的覆盖了。
2. 是聚焦
3. BUTTON更简单方便些。
4. 那就是在控件上面显示图了。
回复

使用道具 举报

39

主题

127

回帖

244

积分

高级会员

积分
244
 楼主| 发表于 2016-10-7 11:01:03 | 显示全部楼层

回 eric2013 的帖子

eric2013:1. 估计是把之前的覆盖了。
2. 是聚焦
3. BUTTON更简单方便些。
4. 那就是在控件上面显示图了。
....... (2016-10-07 10:25) 
谢谢啦。谢谢啦。
回复

使用道具 举报

10

主题

20

回帖

50

积分

初级会员

积分
50
QQ
发表于 2016-10-27 11:29:11 | 显示全部楼层
请问一下,icon非被选时,要显示半透明背景,该怎么做?谢谢!

ICONVIEW_CreateEx(48, 24, 240, 216, hWin, WM_CF_SHOW | WM_CF_HASTRANS, 0, GUI_ID_ICONVIEW0, 96, 88);
如果设置以上这句后,以下这句是无效的。

ICONVIEW_SetBkColor(WM_GetDialogItem(hWin, GUI_ID_ICONVIEW0),ICONVIEW_CI_BK, (0X80uL<<24) |GUI_BLUE);

因为这个控件已经全透明了。。。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-14 13:46 , Processed in 0.244200 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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