资深版主
- 积分
- 10541
- 金钱
- 10541
- 注册时间
- 2017-2-18
- 在线时间
- 1908 小时
|
本帖最后由 peng1554 于 2019-2-13 21:59 编辑
探索者F407开发板的EMWIN实验9 分段存储设备在4.3寸MCU屏上显示时靠左显示(方便支持2.8寸和3.5寸屏显示)
这样显示有些别扭,所以改了个居中显示的程序
4.3寸MCU屏的分辨率为800*480,程序设计液晶上边的1/3部分显示字符
中间位置利用存储设备来支持显示填充方块(来回旋转)和填充多边形(旋转)
需要注意的是测试程序存储设备作用的区域比较大(需用400*140个像素点)
所以在显示时相较于例程,红绿填充块的来回移动和多边形的旋转有所放慢
测试程序仅修改_DrawIt()和_DemoBandingMemdev()
[mw_shl_code=c,true]static void _DrawIt(void * pData)
{
tDrawItContext * pDrawItContext = (tDrawItContext *)pData;
GUI_Clear();
GUI_SetFont(&GUI_Font8x8);
GUI_SetTextMode(GUI_TM_TRANS);
//绘制背景,在液晶上显示绿色填充矩形
GUI_SetColor(GUI_GREEN);
GUI_FillRect(pDrawItContext->XPos_Text,
pDrawItContext->YPos_Text - 25,
pDrawItContext->XPos_Text + 100,
pDrawItContext->YPos_Text +15);
//绘制多边形
GUI_SetColor(GUI_BLUE);
GUI_FillPolygon(pDrawItContext->aPointsDest, SIZE_OF_ARRAY(aPoints), 400, 240);
//绘制前景,在液晶上显示红色填充矩形
GUI_SetColor(GUI_RED);
GUI_FillRect(700 - pDrawItContext->XPos_Text,
pDrawItContext->YPos_Text + 35,
700 - pDrawItContext->XPos_Text + 100,
pDrawItContext->YPos_Text + 75);
}
//分段存储演示程序
void _DemoBandingMemdev(void)
{
tDrawItContext DrawItContext;
int i, swap=0;
GUI_SetBkColor(GUI_BLACK);
GUI_Clear();
GUI_SetColor(GUI_YELLOW);
GUI_SetFont(&GUI_Font32B_ASCII);
GUI_DispStringHCenterAt("MEMDEV_Banding - Sample", 400, 5);
GUI_SetFont(&GUI_Font24_ASCII);
GUI_DispStringHCenterAt("Banding memory device\nwithout flickering", 400, 40);
DrawItContext.XPos_Poly = 800;
DrawItContext.YPos_Poly = 480;
DrawItContext.YPos_Text = 190;
while (1)
{
swap = !swap;
for (i = 200; i < 500; i+=3) //来回移动绿色矩形填充块和红色矩形填充块,并旋转多边形填充块
{
float angle = i * 3.1415926 / 55;
DrawItContext.XPos_Text = (swap) ? i : (700 - i); //确定填充矩形的X坐标点
//旋转多边形
GUI_RotatePolygon(DrawItContext.aPointsDest, aPoints,
SIZE_OF_ARRAY(aPoints), angle);
#if USE_BANDING_MEMDEV
{
GUI_RECT Rect = {200, 160, 600,300}; //确定存储设备作用的显示区域
GUI_MEMDEV_Draw(&Rect,&_DrawIt,&DrawItContext,0,0); //使用分段存储绘制
}
#else
//如果没有开启分段存储的话就使用普通绘制方式
_DrawIt((void *)&DrawItContext);
#endif
}
}
}[/mw_shl_code]
|
|