硬汉嵌入式论坛

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

[emWin] 调用GUI_DrawBitmap后,再调用GUI_Clear,则只能清除刚才图片大小的区域

[复制链接]

1

主题

2

回帖

5

积分

新手上路

积分
5
发表于 2017-4-1 16:55:16 | 显示全部楼层 |阅读模式
  使用STemWin532,IAR编译器,移植后,写下几句简单的显示,如下:
  GUI_Init();
  GUI_SetBkColor(GUI_BLUE);
  GUI_Clear();      

  GUI_DrawBitmap(&bmAdultIcon,10,10);

  GUI_Clear();  

第1个  GUI_Clear()能把屏幕清除为蓝色,  GUI_DrawBitmap(&bmAdultIcon,10,10)能够正常显示图片;而第2个GUI_Clear()只能把刚才显示的图片区域清除掉。为什么?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2017-4-2 00:23:13 | 显示全部楼层
正常,因为第二次调用函数 GUI_Clear();还是以你的 GUI_SetBkColor(GUI_BLUE); 进行清除的。
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2017-4-2 17:26:07 | 显示全部楼层
第二次清除不能满屏清除,只清除了刚才显示图片的一小块区域
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2017-4-3 20:16:15 | 显示全部楼层
终于找到原因了,我移植时写的LCD_FillWindow,没有加前后两句LCD_SetWindow()调用,加了以后问题解决。

void LCD_FillWindow(U16 sx,U16 sy,U16 ex,U16 ey,U16 color)
{
    U32 i,all_point=0;

    all_point=(ex-sx+1)*(ey-sy+1);

    LCD_SetWindow(sx,sy,ex,ey);
    LCD_SetCursor(sx,sy);                    // Page 58 of SSD2119 datasheet
   
    //预备写GRAM
    LCD_REG_ADDRESS = 0x22;
   
    for(i=0; i<all_point; i++)
        LCD_DATA_ADDRESS = color;

    LCD_SetWindow(0,0,0x13F,0xEF);   
}
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-15 02:29 , Processed in 0.343764 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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