硬汉嵌入式论坛

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

[emWin] emwin 存储设备图片,背景问题

[复制链接]

100

主题

94

回帖

394

积分

高级会员

积分
394
发表于 2021-2-20 13:42:20 | 显示全部楼层 |阅读模式
  1. int LoadBitMapToMemDev(GUI_MEMDEV_Handle *hpMenDev ,const char *pcFilename,int iXsize,int iYsize)
  2. {
  3.         GUI_BITMAP bmp;       
  4.         GUI_LOGPALETTE palette;
  5.         GUI_HMEM hMem;

  6.         FIL     file;
  7.         int     filesize;       
  8.         int     result;
  9.         int     bw;
  10.         char*   _acBuffer;

  11.         result = f_open(&file, pcFilename, FA_OPEN_EXISTING | FA_READ | FA_OPEN_ALWAYS);
  12.         if (result != FR_OK)
  13.         {
  14.                 ERROR("f_open(%s) =%d\n",pcFilename,result);
  15.                 return ERR_FILE;
  16.         }

  17.         filesize = f_size(&file);
  18.         hMem = GUI_ALLOC_AllocZero(filesize);////申请一块内存空间,并将其清零
  19.         _acBuffer = GUI_ALLOC_h2p(hMem);////将申请到的内存句柄转换成指针类型

  20.         result = f_read(&file, _acBuffer, filesize, &bw);
  21.         if (result != FR_OK)
  22.         {
  23.                 ERROR("f_read(%s) =%d\n",pcFilename,result);
  24.                 f_close(&file);               
  25.                 GUI_ALLOC_Free(hMem);

  26.                 return ERR_FILE;
  27.         }

  28.         GUI_CreateBitmapFromStream(&bmp, &palette, _acBuffer);

  29.         /*创建内存设备,并将 BMP 图片绘制到此内存设备里面,此内存设备要在主程序中用到,不要释放*/
  30.         *hpMenDev = GUI_MEMDEV_CreateFixed(0,0,iXsize,iYsize,GUI_MEMDEV_HASTRANS,GUI_MEMDEV_APILIST_32,GUI_COLOR_CONV_8888);
  31.         GUI_MEMDEV_Select(*hpMenDev);
  32.         GUI_SetBkColor(GUI_TRANSPARENT);
  33.         GUI_Clear();
  34.         GUI_DrawBitmap(&bmp, 0, 0);
  35.         GUI_MEMDEV_Select(0);

  36.         GUI_ALLOC_Free(hMem);

  37.         f_close(&file);       
  38.         return ERR_NONE;
  39. }
复制代码
请看代码和两张图。实验效果和原始图的差异怎么消除?

原始图片

原始图片
捕获.PNG
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2021-2-20 16:55:45 | 显示全部楼层
看着貌似是RGB和BGR问题
可以直接使用数值0x00FF0000绘制个颜色值看看
回复

使用道具 举报

100

主题

94

回帖

394

积分

高级会员

积分
394
 楼主| 发表于 2021-2-23 19:39:53 | 显示全部楼层
eric2013 发表于 2021-2-20 16:55
看着貌似是RGB和BGR问题
可以直接使用数值0x00FF0000绘制个颜色值看看
  1. BUTTON_SetText(hItem, "123");                         
  2. BUTTON_SetFont(hItem, &GUI_FontSong33);                        
  3. BUTTON_SetTextColor(hItem, 0, 0x00FF0000);         
复制代码


这段代码显示蓝色
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2021-2-24 09:46:13 | 显示全部楼层
wen 发表于 2021-2-23 19:39
这段代码显示蓝色

你的emWin格式库用的那个,ARGB或ABGR
回复

使用道具 举报

100

主题

94

回帖

394

积分

高级会员

积分
394
 楼主| 发表于 2021-2-25 17:38:33 | 显示全部楼层
eric2013 发表于 2021-2-24 09:46
你的emWin格式库用的那个,ARGB或ABGR

1.,ARGB或ABGR格式是不是看这个宏 GUI_USE_ARGB?
2.我把这个宏设置为0 和1 背景都是黄色

没辙了么   
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-20 03:58 , Processed in 0.386741 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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