在C语言或者C++中,如何旋转一张图片呢??

源码码头网 毕业设计 1

目前在开发一个小游戏,使用 easyx 图形库开发的。目前遇到一个问题卡住了,我想让飞机机头一直朝外绕着地球顺时针地飞,但是,不知道怎么旋转图片???easyx 库并没有现成的函数啊?不知道有没有什么WIN32 API函数可以用吗??

回复

共2条回复 我来回复
  • 源码工坊
    这个人很懒,什么都没有留下~
    评论

    通过矩形的中心坐标与原顶点坐标以及旋转角度,计算矩形的旋转后4个顶点的位置的公式如下:

                        x2 = (x1-x0)*cos(q) –(y1-y0)*sin(q) + x0;
                        y2 = (x1-x0)*sin(q) + (y1-y0)*cos(q) + y0;
    

    其中,q表示矩形的旋转角度,x1表示矩形的原顶点横坐标,x0表示矩形的中心坐标。

    但是,C语言中的sin()函数和cos()函数中的参数并不是角度,而是弧度,所以需要我们通过下述公式将角度转化为弧度:

    弧度= 3.1415926*角度/180;
    

    根据上述公式,我们可以计算一个点绕另一个点旋转一定角度后的位置坐标。

    飞旋转的原理可以是:计算出图片各个点旋转后的坐标,再把每个点画到屏幕上!

    0条评论
  • 毕设驿站
    这个人很懒,什么都没有留下~
    评论

    用WIN32 API函数BitBlt、StretchBlt等绘图函数是旋转不了的,你可以使用SetWorldTransForm这个函数,可以实现旋转DC,从而实现图片旋转

    0条评论

发表回复

登录后才能评论