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