|
我打算emwin做一个双仪表设计,如图所示,蓝色画线部分大仪表背景图固定不动,指针旋转即可。这部分我已经用emwin自动存储设备例程修改实现了。但第二个内嵌的仪表不知道该如何实现,第二个内嵌小仪表是需要转动的,接收到相应数值转动多少度,就是有一张大图400*400,但我只开个100*100显示部分区域,收到数值后进行图片旋转偏移改变显示的内容。
而且曾经关系如图那样两个仪表背景都在指针下面。
第一种思路,我尝试在自动存储设备主函数下直接创建一个存储设备,然后再while(1)里用GUI_MEMDEV_CopyToLCDAt(hMem, 400, 220);写入LCD中。
假设区域设为100*100,但是存储设备一直会在指针上面,而且指针碰到这个存储设备区域,就会闪烁,应该是指针属于自动设备,存在局部刷新,所以导致闪烁。
第二种思路我我选择在创建的自动存储设备GUI_MEMDEV_DrawAuto(&AutoDev, &Param.AutoDevInfo, &_Draw, &Param);里的_Draw直接加存储设备显示底图,结果屏幕黑了,没任何反应。是因为不能再自动存储设备函数里加入自己创建的存储设备吗?
第三种思路我选择在创建的自动存储设备GUI_MEMDEV_DrawAuto(&AutoDev, &Param.AutoDevInfo, &_Draw, &Param);里的_Draw中设置两个层,小仪表作为最底层,然后大仪表背景图打算开个孔,就是把图需要显示小仪表的区域弄成透明并把大仪表背景弄在第二层,然后指针放在第三层。但我发现再自动存储设备上无法利用GUI_DrawBitmap(&bm, x, y);绘制具有GUI_DRAW_BMPA565格式的图,一旦调用绘制这种格式的图,屏幕也是黑屏。如果没有这种透明格式,就可以绘制正常显示。屏幕是565格式的。而且我在想就算成功绘制透明图片,也好像没有旋转图片的函数,只有旋转存储设备的函数。
同时说明一下GUI_DRAW_BMPA565格式透明图片如果单独显示,就是不用创建自动设备,我用表盘那个例子把图片改为有透明像素的图片是可以显示的。
求大神给个思路方案。我贴出了部分代码图,请教一下大家。
|
|