|

楼主 |
发表于 2016-3-13 10:38:55
|
显示全部楼层
回 eric2013 的帖子
void Draw_clock(void)
{
GUI_AUTODEV AutoDev; /* 内存设备 */
PARAM Param; /* PARAM类型变量 */
int t0 = 36000; /* 用于三个指针的计数 */
int t1 = 36000;
int t2 = 36000;
/* 使能抗锯齿 */
GUI_AA_EnableHiRes();
/* 设置抗锯齿因数 */
GUI_AA_SetFactor(MAG);
GUI_SetFont(&GUI_Font24_ASCII);
GUI_DispStringHCenterAt("Simple Clock\\n", LCD_GetXSize() / 2, 10);
/* 创建自动设备对象 */
GUI_MEMDEV_CreateAuto(&AutoDev);
while (1)
{
/* 第一个指针计数,用于旋转速度 */
t0 -= 100;
if (t0 < 0)
{
t0 = 36000;
}
/* 第二个指针计数,用于旋转速度 */
t1 -= 10;
if (t1 < 0)
{
t1 = 36000;
}
/* 第三个指针计数,用于旋转速度 */
t2 -= 1;
if (t2 < 0)
{
t2 = 36000;
}
/* 旋转第一个指针 */
Param.Angle = t0;
Param.Angle *= 3.1415926f / 18000;
/*按指定角度旋转边形,但是不绘制*/
GUI_RotatePolygon(Param.aPoints, _aNeedle, countof(_aNeedle), Param.Angle);
/* 旋转第二个指针 */
Param.Angle1 = t1;
Param.Angle1 *= 3.1415926f / 18000;
GUI_RotatePolygon(Param.aPoints1, _aNeedle1, countof(_aNeedle1), Param.Angle1);
/* 旋转第三个指针 */
Param.Angle2 = t2;
Param.Angle2 *= 3.1415926f / 18000;
GUI_RotatePolygon(Param.aPoints2, _aNeedle2, countof(_aNeedle2), Param.Angle2);
GUI_MEMDEV_DrawAuto(&AutoDev, & aram.AutoDevInfo, &_Draw, & aram);
GUI_Delay(1);
}
}
static void _Draw(void * p) {
PARAM * pParam;
pParam = (PARAM *)p;
/* 绘制背景 ************************************************************/
if (pParam->AutoDevInfo.DrawFixed)
{
#if 1
GUI_SetColor(GUI_WHITE);
GUI_FillCircle(LCD_GetXSize() / 2 , (LCD_GetYSize() / 2 + 17) , 70);
#endif
}
/* 绘制移动的指针 ************************************************************/
GUI_SetColor(GUI_RED);
/*在指定位置绘制无锯齿多边形*/
GUI_AA_FillPolygon(pParam->aPoints, countof(_aNeedle), MAG * LCD_GetXSize() / 2, MAG * (LCD_GetYSize() / 2 + 17));
GUI_SetColor(GUI_RED);
GUI_AA_FillPolygon(pParam->aPoints1, countof(_aNeedle1), MAG * LCD_GetXSize() / 2, MAG * (LCD_GetYSize() / 2 + 17));
GUI_SetColor(GUI_RED);
GUI_AA_FillPolygon(pParam->aPoints2, countof(_aNeedle2), MAG * LCD_GetXSize() / 2, MAG * (LCD_GetYSize() / 2 + 17));
}
大体上就是基于论坛里的简易时钟去掉背景图片出现的,我猜问题应该是出现在这个地方,因为后后来加上一张背景图片后就正常了。
/* 绘制背景 ************************************************************/
if (pParam->AutoDevInfo.DrawFixed)
{
Draw_Bitmap();
GUI_DispStringHCenterAt("Simple Clock\\n", LCD_GetXSize() / 2, 10);
#if 1
GUI_SetColor(GUI_WHITE);
GUI_AA_FillCircle(LCD_GetXSize() / 2 * MAG, (LCD_GetYSize() / 2 + 17) * MAG, 4 * MAG);
#endif
// GUI_FillCircle(LCD_GetXSize() / 2, (LCD_GetYSize() / 2 + 17) , 70);
} |
|