本帖最后由 hpdell 于 2018-5-29 11:08 编辑
请教下,使用 GUI_MEMDEV_Rotate 旋转显示表盘指针图片 ?
使用函数 GUI_MEMDEV_Rotate ,图片旋转始终都是以图片的中心为基准的,有没有什么方法可以改一下啊 ?
另外,指针图片是不是需要做成 镜像的图片 ,吧镜像部分搞成透明 ??????
效果如下:
旋转图片-2.jpg (40.87 KB, 下载次数: 0)
下载附件
2018-5-29 09:32 上传
显示代码如下:
void GUI_MEMDEV_ColckRotaeShow(void)
{
int t0; // 用于三个指针的计数
int t1;
int t2;
GUI_MEMDEV_Select(hMemDest);
GUI_MEMDEV_Write (hMemLcd); //将给定存储设备的内容写入当前选定的存储设备中,
GUI_MEMDEV_Rotate(hMemSourceBk,
hMemDest,
0, // 显示地址由 hMemDest、hMemLcd 决定
0, // 显示地址由 hMemDest、hMemLcd 决定
0, // 因为显示表盘不需要旋转,所以此次的值为0
1000);
// 第一个指针计数,用于旋转秒针
t0 = 360 - (RotateSecond * 6);
// 第二个指针计数,用于旋转分针
t1 = 360 - (RotateMinute *6) -(RotateSecond /10); //秒针每移动10秒,分钟移动的角度为1度
/*
把小时 sTime.Hours%12是吧24小时制式sTime.Hours转化为12小时制,*30(因为小时时针每小时运行30度),
((sTime.Minutes /10)*6) 这句是分钟每移动10分钟,小时时针移动 6度
*/
t2 = 360 - (((RotateHour)%12) * 30) - ((RotateMinute /10)*6);
GUI_MEMDEV_RotateHQ(hMemHour,
hMemDest,
100+56, // (RectDest.x1 - RectSource.x1) / 2,
83, //(RectDest.y1 - RectSource.y1) / 2,
t2 * 1000,
1000);
GUI_MEMDEV_RotateHQ(hMemMinute,
hMemDest,
100+56, // (RectDest.x1 - RectSource.x1) / 2,
43, //(RectDest.y1 - RectSource.y1) / 2,
t1 * 1000,
1000);
GUI_MEMDEV_RotateHQ(hMemSecond,
hMemDest,
100+59, // (RectDest.x1 - RectSource.x1) / 2,
174/4+32, //(RectDest.y1 - RectSource.y1) / 2,
t0 * 1000,
1000);
GUI_MEMDEV_Select(0);
GUI_MULTIBUF_Begin();
GUI_MEMDEV_CopyToLCD (hMemDest);
GUI_MULTIBUF_End();
RotateSecond ++;
if(RotateSecond >= 60)
{
RotateSecond = 0;
RotateMinute++;
if(RotateMinute >= 60)
{
RotateMinute =0;
RotateHour++;
if(RotateHour >= 24)
{
RotateHour=0;
}
}
}
}
刚刚改了一下图片,现在貌似可以了
0001.png (97.12 KB, 下载次数: 0)
下载附件
2018-5-29 14:44 上传
目前看来只能这样解决了
如果以后谁有更好的办法 就告诉我一下啊
一周热门 更多>