硬汉嵌入式论坛

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

[emWin] 关于emwin iconview的图片问题

[复制链接]

17

主题

69

回帖

120

积分

初级会员

积分
120
发表于 2020-3-31 10:14:49 | 显示全部楼层 |阅读模式
图片是网上随便找的 png图,基本都为蓝色,通过emwin 自带的BmpCvtST。exe 软件转换成c文件,选择 High color with Alpha(565) c文件内的RGB 数值是蓝色,但显示橘色。本以为是emwin 是BGR格式选择High color with Alpha(565),red and blue swapped 翻转 红蓝后  c文件内的RGB 数值是橘色  但显示还是 橘色并没有变化。现在显示的橘色 换算成RGB 正好和原图的蓝色 为 红蓝翻转后的颜色。除了iconview 其他小部件显示颜色正常。LCD驱动用的是 ili9806g,有大佬能帮忙找下问题吗。
微信截图_20200331093408.png 微信截图_20200331093736.png 微信图片_20200331094244.jpg

后修改GUIDRV_FlexColor_Template 中的驱动模式从GUICC_565 改为了 GUICC_M565 ,图标显示正常了,但 其他色彩都红蓝翻转,显示不正常了,这iconview 为什么一直是 反着的。

微信图片_20200331100316.jpg

有人知道该怎么解决这个问题吗。


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2020-3-31 11:28:49 | 显示全部楼层
用流位图正常不,ICONVIEW也支持流位图。
生成流位图文件后,再使用B2C.exe小软件转换成C数组。
回复

使用道具 举报

17

主题

69

回帖

120

积分

初级会员

积分
120
 楼主| 发表于 2020-3-31 13:08:33 | 显示全部楼层
eric2013 发表于 2020-3-31 11:28
用流位图正常不,ICONVIEW也支持流位图。
生成流位图文件后,再使用B2C.exe小软件转换成C数组。

流位图刚刚 试过了 还是一样的问题 部分小控件是红蓝翻转,硬汉哥 为什么 默认要选 GUICC_M565,我在选择GUICC_565时 那些自带的GUI_RED等颜色显示才是正常的呀,  这是什么原因。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2020-3-31 14:10:12 | 显示全部楼层
opsd999 发表于 2020-3-31 13:08
流位图刚刚 试过了 还是一样的问题 部分小控件是红蓝翻转,硬汉哥 为什么 默认要选 GUICC_M565,我在选择 ...

直接调用具体的数值测试0xFF0000,0x0000FF这种。

你调用GUI_RED这些的话,有个专门的ARGB和ABGR切换的宏定义。
回复

使用道具 举报

17

主题

69

回帖

120

积分

初级会员

积分
120
 楼主| 发表于 2020-3-31 14:20:44 | 显示全部楼层
eric2013 发表于 2020-3-31 14:10
直接调用具体的数值测试0xFF0000,0x0000FF这种。

你调用GUI_RED这些的话,有个专门的ARGB和ABGR切换 ...

原来如此,那问题解决了 我说怎么不太对
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2020-3-31 20:44:42 | 显示全部楼层
opsd999 发表于 2020-3-31 14:20
原来如此,那问题解决了 我说怎么不太对

emWin好像是从5.40版本后开始,正式开始推出ARGB格式库,搞了这么个宏切换。
回复

使用道具 举报

17

主题

69

回帖

120

积分

初级会员

积分
120
 楼主| 发表于 2020-4-1 11:11:22 | 显示全部楼层
eric2013 发表于 2020-3-31 20:44
emWin好像是从5.40版本后开始,正式开始推出ARGB格式库,搞了这么个宏切换。

那有iconview的学习例程吗,这个 默认的回调函数 触摸点击切换选择item 怎么巨难进入 WM_NOTIFICATION_CLICKED,点半天都不会选择,按键通过 setsel 函数 切换选择倒是挺顺的。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2020-4-1 11:14:03 | 显示全部楼层
opsd999 发表于 2020-4-1 11:11
那有iconview的学习例程吗,这个 默认的回调函数 触摸点击切换选择item 怎么巨难进入 WM_NOTIFICATION_CL ...

这个的主界面就是:

【安富莱】F429开发板RTOS+emWin+FS+TCP/IP+USB+CAN+Modbus综合Demo已发布(2017-03-21)
http://www.armbbs.cn/forum.php?m ... 7330&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

17

主题

69

回帖

120

积分

初级会员

积分
120
 楼主| 发表于 2020-4-1 14:28:22 | 显示全部楼层
eric2013 发表于 2020-4-1 11:14
这个的主界面就是:

【安富莱】F429开发板RTOS+emWin+FS+TCP/IP+USB+CAN+Modbus综合Demo已发布(2017- ...


/*********************************************************************
*
*       _aDialogCreate
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  { WINDOW_CreateIndirect, NULL, ID_WINDOW_Menu, 0, 64, 693, 416, 0, 0x0, 0 },
  { ICONVIEW_CreateIndirect, NULL, ID_ICONVIEW_Config, 50, 30, 693, 416, 0, 0x00640078, 0 },
  // USER START (Optionally insert additional widgets)
  // USER END
};

/*********************************************************************
*
*       Static code
*
**********************************************************************
*/

// USER START (Optionally insert additional static code)
// USER END

/*********************************************************************
*
*       _cbDialog
*/
static void _cbDialog(WM_MESSAGE * pMsg) {
  WM_HWIN hItem;
        //WM_HWIN hItem1;
  int NCode;
  int Id;
  // USER START (Optionally insert additional variables)
  // USER END

  switch (pMsg->MsgId) {
  case WM_PAINT:
                GUI_SetColor(0x00000000);
                GUI_FillRect(0, 0, 854, 64);
          break;
  case WM_INIT_DIALOG:
          hItem = pMsg->hWin;
          WINDOW_SetBkColor(hItem, 0x00000000);

//        hICON = ICONVIEW_CreateEx(50, 30, 693, 416,
//                           pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS,
//                           ICONVIEW_CF_AUTOSCROLLBAR_V, ID_ICONVIEW_Config, 100, 120);
                hICON = WM_GetDialogItem(pMsg->hWin,ID_ICONVIEW_Config);
                ICONVIEW_SetBkColor(hICON,ICONVIEW_CI_SEL,GUI_DARKGRAY);
                ICONVIEW_SetTextColor(hICON,ICONVIEW_CI_UNSEL,GUI_WHITE);
                ICONVIEW_SetTextColor(hICON,ICONVIEW_CI_SEL,0x00FF0000);
                ICONVIEW_SetBkColor(hICON,ICONVIEW_CI_BK,0x00000000);
                if(Language)
                        ;
                else
                        ICONVIEW_SetFont(hICON,&GUI_Font24B_ASCII);
                /*设置item之间的距离*/
                ICONVIEW_SetSpace(hICON,GUI_COORD_X,50);
                ICONVIEW_SetSpace(hICON,GUI_COORD_Y,50);
                ICONVIEW_AddStreamedBitmapItem(hICON,&_acicon_config,ButtonText[Language][8]);
                ICONVIEW_AddStreamedBitmapItem(hICON,&_acicon_config,ButtonText[Language][9]);
                ICONVIEW_AddStreamedBitmapItem(hICON,&_acicon_config,ButtonText[Language][10]);
                ICONVIEW_AddStreamedBitmapItem(hICON,&_acicon_config,ButtonText[Language][11]);
                ICONVIEW_AddStreamedBitmapItem(hICON,&_acicon_config,ButtonText[Language][12]);
                ICONVIEW_AddStreamedBitmapItem(hICON,&_acicon_config,ButtonText[Language][13]);
                //ICONVIEW_SetSel(hICON,Icon_sel++);
                WM_SetFocus(pMsg->hWin);
          // USER START (Optionally insert additional code for further widget initialization)
          // USER END
          break;
  case WM_NOTIFY_PARENT:
          Id = WM_GetId(pMsg->hWinSrc);
          NCode = pMsg->Data.v;
          switch (Id) {
          case ID_ICONVIEW_Config:
                  switch (NCode) {
                  case WM_NOTIFICATION_CLICKED:
                          // USER START (Optionally insert code for reacting on notification message)
                                printf("123");
                          // USER END
                          break;
                  case WM_NOTIFICATION_RELEASED:
                          // USER START (Optionally insert code for reacting on notification message)
                          // USER END
                          break;
                          // USER START (Optionally insert additional code for further notification handling)
                          // USER END
                  }
                  break;
                  // USER START (Optionally insert additional code for further Ids)
                // USER END
          }
          break;
       

  // USER START (Optionally insert additional message handling)
  // USER END
  default:
    WM_DefaultProc(pMsg);
    break;
  }
}

/*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       CreateWindow
*/
WM_HWIN Create_MainActivity_Menu(WM_HWIN hParent);
WM_HWIN Create_MainActivity_Menu(WM_HWIN hParent) {
  WM_HWIN hWin;

  hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, hParent, 0, 0);
  return hWin;
}

// USER START (Optionally insert additional public code)
// USER END

/*************************** End of file ****************************/


void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
        if(GPIO_Pin == USER_Btn_Pin)
        {
                HAL_Delay(20);
                if(HAL_GPIO_ReadPin(USER_Btn_GPIO_Port,USER_Btn_Pin) == GPIO_PIN_SET)
                {
                        ICONVIEW_SetSel(hICON,Icon_sel++);
                        if(Icon_sel >5)
                                Icon_sel = 0;
                }
        }
}



硬汉哥 这个iconview哪里有问题,我每次点击一个item都要长按n秒后再点击他才会 选中这个item, 而且他选中后的刷新明显比 按键中断去改的要慢。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2020-4-1 14:59:42 | 显示全部楼层
opsd999 发表于 2020-4-1 14:28
/*********************************************************************
*
*       _aDialogCreat ...

实体按键操作的话,参考我这个帖子里的智能家居界面的设计,支持实体按键,操作比较方便

http://www.armbbs.cn/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

17

主题

69

回帖

120

积分

初级会员

积分
120
 楼主| 发表于 2020-4-1 15:20:17 | 显示全部楼层
eric2013 发表于 2020-4-1 14:59
实体按键操作的话,参考我这个帖子里的智能家居界面的设计,支持实体按键,操作比较方便

http://www.a ...

我的项目是 要求 都能操作,按键可以实现,现在触摸的有问题,他必须要长按n秒再点击才会选中,但我的button 每次点击能正常触发
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2020-4-1 15:24:56 | 显示全部楼层
opsd999 发表于 2020-4-1 15:20
我的项目是 要求 都能操作,按键可以实现,现在触摸的有问题,他必须要长按n秒再点击才会选中,但我的but ...

这个例子实体按键和触摸都支持,适合你。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-18 20:04 , Processed in 0.304498 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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