有一个图片  在屏幕中间显示  想让这个图片沿着顺时针一秒的旋转  这么弄···求教··

解决方案 »

  1.   

    根据坐标来做旋转变换,再插值!http://game.chinaitlab.com/devdoc/720850.html
      

  2.   

    如果你只旋转90°那么GDI+很简单就可以实现了!!
    如果你要任意角旋转,那就要计算旋转圆心,坐标,还要保持足够大旋转空间不然会变形
      

  3.   

    //2D图rotate/move/scalevoid scr_rotate(LHxx2DIMAGE *sc,float angle,float scale)
    {
    float dx,dy,dw,dh;//临时变量
    float sw = sc->LHxxIw;//image width
    float sh = sc->LHxxIh;//image height 
    float sclx,scly,sclw,sclh;//复位并放缩的坐标(局部坐标系--image的坐标系)

    float hotx =sw/2;//旋转中心
    float hoty =sh/2;
    //复位  放缩 , 旋转  ,平移    float xscale=scale;
    float yscale=scale; //复位并放缩后的区域
    sclx = -hotx*scale;
    scly = -hoty*scale;
    sclw = (sw - hotx);
    sclh = (sh - hoty); float sint, cost;
    sint = sinf(angle);
    cost = cosf(angle); float w=sc->LHxxIw/2,h=sc->LHxxIh/2; LHxxSCREENVERTEX* ss;
        sc->LHxx2DMVertexBuffer->Lock( 0, 0, (void**)&ss, 0 ); ((LHxxSCREENVERTEX *)ss)[0].LHxxSx = sclx*cost - scly*sint + sc->LHxxIx+w;
    ((LHxxSCREENVERTEX *)ss)[0].LHxxSy = sclx*sint + scly*cost + sc->LHxxIy+h; ((LHxxSCREENVERTEX *)ss)[1].LHxxSx = sclw*cost - scly*sint + sc->LHxxIx+w;
    ((LHxxSCREENVERTEX *)ss)[1].LHxxSy = sclw*sint + scly*cost + sc->LHxxIy+h; ((LHxxSCREENVERTEX *)ss)[2].LHxxSx = sclx*cost - sclh*sint + sc->LHxxIx+w;
    ((LHxxSCREENVERTEX *)ss)[2].LHxxSy = sclx*sint + sclh*cost + sc->LHxxIy+h; ((LHxxSCREENVERTEX *)ss)[3].LHxxSx = sclw*cost - sclh*sint + sc->LHxxIx+w;
    ((LHxxSCREENVERTEX *)ss)[3].LHxxSy = sclw*sint + sclh*cost + sc->LHxxIy+h;
        sc->LHxx2DMVertexBuffer->Unlock();
    }
      

  4.   

    GDI+
    SetTransform(Matrix*)

    RotateAt(...)
      

  5.   

    http://www.51log.net/dev/5010/5017325.htm
      

  6.   

    so easy。。
    使用CxImage类库,先加载图片,然后调用CxImage::Rotate()方法,随便你调什么角度,代码量不超过10行。。