请教下,表盘指针图片旋转 ??

2019-12-14 12:14发布

本帖最后由 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;
                        }
                }
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
cloudboy
1楼-- · 2019-12-14 14:03
那就旋转再加上位移呗,拿公式算一下,要么就把图片变成以孔为中心
shuiluo2
2楼-- · 2019-12-14 19:51
emwin贴图做表盘指针?挺好看的
hpdell
3楼-- · 2019-12-14 19:57
cloudboy 发表于 2018-5-29 09:38
那就旋转再加上位移呗,拿公式算一下,要么就把图片变成以孔为中心

不管怎么移位,他都以图片中心旋转的,
hpdell
4楼-- · 2019-12-14 22:54
shuiluo2 发表于 2018-5-29 09:50
emwin贴图做表盘指针?挺好看的

多谢多谢啊,有什么解决的好方法没有啊 ?

xs2010
5楼-- · 2019-12-14 23:50
 精彩回答 2  元偷偷看……
hpdell
6楼-- · 2019-12-15 01:41
xs2010 发表于 2018-5-29 11:23
flash可以调整图片旋转中心点,这个只能改图了

如果实在没有好的办法,只能重新做 指针图片了啊

一周热门 更多>