stm32 emwin 2D 绘图绘制颜 {MOD}一半就修改了

2019-12-15 12:24发布

本帖最后由 蜗牛蜗牛 于 2018-10-20 09:37 编辑

介绍如下: 通过对话框创建第一个界面后按一个按钮 进入这个界面
这个界面是在paint里面重绘的24个圆形代表红绿灯,这个界面创建了一个定时器,设想的是每秒刷新一次paint内24个圆(圆的填充颜 {MOD}是红黄绿黑轮流显示,黑暂时不显示),定时器 重绘调用这个函数 WM_Paint( pMsg->hWin);//
现在的问题是:如图所示填充元会出现半个情况并且串 {MOD}了,还有就是通过打印我看出,每一秒调用一次  WM_Paint( pMsg->hWin) 。paint消息内容会进入3次,每次进入paint 只是重绘一个整屏幕三分之一左右,
我怀疑是整个有个可能和emwin的对这个屏幕绘制机制有关系,或者底层绘制设置有关系,下面会上传。c的源码,我在总循环中调用guidaly。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
18条回答
蜗牛蜗牛
2019-12-17 14:41
cock 发表于 2018-11-6 14:33
emwin之GUIConf.h中有个GUI_ALLOC_SIZE,一般是8K左右,该值越大,刷屏重复次数越少。只要允许,越大越好 ...

#define USE_EXRAM  1//使用外部RAM
//设置EMWIN内存大小
#define GUI_NUMBYTES  (960*1024)
#define GUI_BLOCKSIZE  0x80  //块大小


//GUI_X_Config
//初始化的时候调用,用来设置emwin所使用的内存
void GUI_X_Config(void) {
        if(USE_EXRAM) //使用外部RAM
        {
                U32 *aMemory = mymalloc(SRAMEX,GUI_NUMBYTES); //从外部SRAM中分配GUI_NUMBYTES字节的内存
                GUI_ALLOC_AssignMemory((void*)aMemory, GUI_NUMBYTES); //为存储管理系统分配一个存储块
                GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE); //设置存储快的平均尺寸,该区越大,可用的存储快数量越少
                GUI_SetDefaultFont(GUI_FONT_6X8); //设置默认字体
        }else  //使用内部RAM
        {
                U32 *aMemory = mymalloc(SRAMIN,GUI_NUMBYTES); //从内部RAM中分配GUI_NUMBYTES字节的内存
                GUI_ALLOC_AssignMemory((U32 *)aMemory, GUI_NUMBYTES); //为存储管理系统分配一个存储块
                GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE); //设置存储快的平均尺寸,该区越大,可用的存储快数量越少
                GUI_SetDefaultFont(GUI_FONT_6X8); //设置默认字体
        }
}


我在确认一下是修改这个 GUI_BLOCKSIZE这个吗?

一周热门 更多>