硬汉嵌入式论坛

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

[emWin] emwin 存储设备 关闭了再打开就变黑屏这个是什么情况

[复制链接]

12

主题

104

回帖

140

积分

初级会员

积分
140
发表于 2018-7-6 15:37:40 | 显示全部楼层 |阅读模式
emwin 存储设备 关闭了再打开就变黑屏
static void  Desktop_MEMDEV(int xPos, int yPos,int xSize,int r,char *Text1,char *Text2,GUI_MEMDEV_Handle * phMem)               
{   
        GUI_MEMDEV_Handle hMemPrev;
        U8 i;
        GUI_AA_SetFactor(4);                // 设置抗锯齿等级
        phMem[0] = GUI_MEMDEV_CreateFixed(xPos, yPos,xSize,r*2+4, GUI_MEMDEV_HASTRANS, GUI_MEMDEV_APILIST_32, GUI_COLOR_CONV_8888);        // 创建桌面背景存储设备
        phMem[1] = GUI_MEMDEV_CreateFixed(xPos, yPos,xSize,r*2+4, GUI_MEMDEV_HASTRANS, GUI_MEMDEV_APILIST_32, GUI_COLOR_CONV_8888);        // 创建桌面背景存储设备
         for (i = 0; i < 2; i++)
        {
         hMemPrev = GUI_MEMDEV_Select(phMem);
         GUI_SetColor(GUI_TRANSPARENT);           //设置透明背景
         GUI_FillRect(xPos, yPos,xPos+xSize,yPos+r*2+4);//设置透明背景矩形
         if(i==1)
         {
                GUI_SetColor(0xC8A05E);                                // 画蓝色填充圆和填充矩形
                GUI_AA_DrawArc(xPos+r+2,yPos+r+2,r-1,r-1,90,270) ;
                GUI_AA_FillCircle(xPos+r+2,yPos+r+2,r);
                GUI_FillRect(xPos+r+2,yPos+2,xPos+xSize/2-1,yPos+2*r+1);

                GUI_SetColor(GUI_WHITE);                                // 画白色色填充圆和填充矩形
                GUI_AA_FillCircle(xPos+xSize-r-2,yPos+r+2,r);
                GUI_FillRect(xPos+xSize/2-1,yPos+2,xPos+xSize-r-1,yPos+2*r+1);

               
                GUI_SetColor(0xC8A05E);                                // 在白色部分画蓝色轮廓
                GUI_SetPenSize(1);
                GUI_AA_DrawLine(xPos+xSize/2-2,yPos+2*r+1,xPos+xSize-r+1-2,yPos+2*r+1);//此处由于画笔大小原因导致只是重叠画线
                GUI_AA_DrawLine(xPos+xSize/2-2,yPos+2*r+1,xPos+xSize-r+1-2,yPos+2*r+1);
                GUI_AA_DrawLine(xPos+xSize/2-2,yPos+2*r+1,xPos+xSize-r+1-2,yPos+2*r+1);
                GUI_SetPenSize(2);
                GUI_AA_DrawLine(xPos+xSize/2-2,yPos+3,xPos+xSize-r+1-2,yPos+3);
                GUI_AA_DrawArc(xPos+xSize-r-2,yPos+r+2,r-1,r-1,-90,90) ;

                GUI_SetFont(&GUI_Font24_1);               //显示字体
                GUI_SetBkColor(0xC8A05E);
                GUI_SetColor(GUI_WHITE);
                GUI_DispStringHCenterAt(Text1, xPos+xSize/4-1, yPos+r-9);//
                GUI_SetFont(&GUI_Font24_1);
                GUI_SetBkColor(GUI_WHITE);
                GUI_SetColor(0xC8A05E);
                GUI_DispStringHCenterAt(Text2, xPos+3*xSize/4-1, yPos+r-9);//
         }
         else
         {
            GUI_SetColor(GUI_WHITE);                                // 画白色色填充圆和填充矩形
               
                GUI_AA_FillCircle(xPos+r+2,yPos+r+2,r);
                GUI_FillRect(xPos+r+2,yPos+2,xPos+xSize/2-1,yPos+2*r+1);

               
                GUI_SetColor(0xC8A05E);                       // 在白色部分画蓝色轮廓
                GUI_SetPenSize(1);
                GUI_AA_DrawLine(xPos+r+2,yPos+2*r+1,xPos+xSize/2-1,yPos+2*r+1);
                GUI_AA_DrawLine(xPos+r+2,yPos+2*r+1,xPos+xSize/2-1,yPos+2*r+1);
                GUI_AA_DrawLine(xPos+r+2,yPos+2*r+1,xPos+xSize/2-1,yPos+2*r+1);//此处由于画笔大小导致画粗了一条线,所以只能用叠加
                GUI_SetPenSize(2);                       
                GUI_AA_DrawArc(xPos+r+2,yPos+r+2,r-1,r-1,90,270) ;
                GUI_AA_DrawLine(xPos+r+2,yPos+3,xPos+xSize/2-1,yPos+3);
               


                GUI_SetColor(0xC8A05E);                                // 画蓝色填充圆和填充矩形
                GUI_AA_DrawArc(xPos+xSize-r-2,yPos+r+2,r-1,r-1,-90,90) ;
                GUI_AA_FillCircle(xPos+xSize-r-2,yPos+r+2,r);
                GUI_FillRect(xPos+xSize/2-1,yPos+2,xPos+xSize-r-1,yPos+2*r+1);

                GUI_SetFont(&GUI_Font24_1);               //显示字体
                GUI_SetBkColor(GUI_WHITE);
                GUI_SetColor(0xC8A05E);
                GUI_DispStringHCenterAt(Text1, xPos+xSize/4-1, yPos+r-9);//
                GUI_SetFont(&GUI_Font24_1);
                GUI_SetBkColor(0xC8A05E);
                GUI_SetColor(GUI_WHITE);
                GUI_DispStringHCenterAt(Text2, xPos+3*xSize/4-1, yPos+r-9);//
         }
  }

        GUI_MEMDEV_Select(0);        // 取消激活该存储设备
}


  case WM_PAINT:
          if(Selection==0)
          GUI_MEMDEV_WriteAt(hMemDesktop[0],490,400);         // 使用存储设备重绘桌面
         else                                                                        
          GUI_MEMDEV_WriteAt(hMemDesktop[1],490,400);         // 使用存储设备重绘桌面
          break;

第一次创建有显示

第一次创建有显示
第一次显示有创建

第二次就变黑

第二次就变黑
切换后再创建就不显示了。
顺便问问,在多级页面第一次创建是黑色的。。不知道啥情况。。还有显示的图案不完整,有点残缺,这个又是啥

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115765
QQ
发表于 2018-7-6 16:04:05 | 显示全部楼层
函数GUI_MEMDEV_Select(phMem);没有切换phMem[0]和phMem[1]
回复

使用道具 举报

12

主题

104

回帖

140

积分

初级会员

积分
140
 楼主| 发表于 2018-7-6 16:17:01 | 显示全部楼层
本帖最后由 cz123123 于 2018-7-6 16:18 编辑
eric2013 发表于 2018-7-6 16:04
函数GUI_MEMDEV_Select(phMem);没有切换phMem[0]和phMem[1]

程序里写了是hMemPrev = GUI_MEMDEV_Select(phMem【i】);有切换哦,不然也不会能用   论坛显示不了这个符号【i】
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115765
QQ
发表于 2018-7-6 16:21:41 | 显示全部楼层
cz123123 发表于 2018-7-6 16:17
程序里写了是hMemPrev = GUI_MEMDEV_Select(phMem【i】);有切换哦,不然也不会能用   论坛显示不了这个符 ...

参数不对,你要是
GUI_MEMDEV_Select(phMem[0]);
GUI_MEMDEV_Select(phMem[1]);
回复

使用道具 举报

12

主题

104

回帖

140

积分

初级会员

积分
140
 楼主| 发表于 2018-7-6 16:24:51 | 显示全部楼层
本帖最后由 cz123123 于 2018-7-6 16:26 编辑
eric2013 发表于 2018-7-6 16:21
参数不对,你要是
GUI_MEMDEV_Select(phMem[0]);
GUI_MEMDEV_Select(phMem[1]);

大佬,,我上面有个for语句。。。可能你漏看了。。没注释很尴尬,我说下,我这个如果创建有图案是能点击,也就是2个存储设备没问题。。能使用的。我就想问为啥我关了再创建就没了。。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115765
QQ
发表于 2018-7-6 17:12:32 | 显示全部楼层
如果下面这个没问题的话,别的什么问题了,方便的话,可以在模拟器上跑一个简单的界面,我给你测试修改下。


QQ截图20180706171150.png
回复

使用道具 举报

12

主题

104

回帖

140

积分

初级会员

积分
140
 楼主| 发表于 2018-7-6 22:43:47 | 显示全部楼层
eric2013 发表于 2018-7-6 17:12
如果下面这个没问题的话,别的什么问题了,方便的话,可以在模拟器上跑一个简单的界面,我给你测试修改下。 ...

对。就是那个地方是是个数组中括号i,,方便,等我晚上弄完发个出来
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-17 07:18 , Processed in 0.305062 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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