请问各位大侠  用vc6.0怎样实现矩形橡皮框并使橡皮框任意角度旋转啊  我用了CRectTracker类画了一个但是不知道怎么旋转啊 急死了  跪求  谢谢

解决方案 »

  1.   

    CRectTracker这个类就是水平的阿。
    想要旋转,自己扩展一个类
      

  2.   

    你可以用GDI+,那里可以做任何旋转变换, 具体查csdn就知道了
      

  3.   

    //////////////////////////////////////////////////////////////////////////
    //Name:StoreRect
    //依照选取的两个点绘制矩形,将矩形的每一个点存储到容器里面
    //在容器的前4个单元里面储存矩形的4个直角坐标。
    //////////////////////////////////////////////////////////////////////////void CObject::StoreRect(const POINT &pt1,const POINT &pt2)
    {
    if (pt1.x==pt2.x||pt1.y==pt2.y)
    return;
    if (!P->empty())
    {
    P->clear();
    }
    SetColor(WHITE);
    SetName(RECTTANELE);
    int vx=pt2.x-pt1.x;
    int vy=pt2.y-pt1.y;
    int sx=pt1.x;
    int sy=pt1.y;

    if (vx<0)
    {
    vx=-vx;
    sx=pt2.x;
    }
    if (vy<0)
    {
    vy=-vy;
    sy=pt2.y;
    }
    //首先储存矩形的4个点
    POINT ptT;
    P->push_back(pt1);
    P->push_back(pt2);
    ptT.x=pt1.x;
    ptT.y=pt2.y;
    P->push_back(ptT);
    ptT.x=pt2.x;
    ptT.y=pt1.y;
    P->push_back(ptT);

    //然后再储存矩形的4条边
    int x,y;

    ptT.y=sy;//top
    for( x=1;x<vx;x++)
    {
    ptT.x=sx+x;
    P->push_back(ptT);
    }

    ptT.y=sy+vy;//bottom
    for( x=1;x<vx;x++)
    {
    ptT.x=sx+x;
    P->push_back(ptT);
    }

    ptT.x=sx;//left
    for ( y=1;y<vy;y++)
    {
    ptT.y=sy+y;
    P->push_back(ptT);

    }

    ptT.x=sx+vx;//right
    for ( y=1;y<vy;y++)
    {
    ptT.y=sy+y;
    P->push_back(ptT);

    }

    }
      

  4.   

    CRectTracker类不支持旋转的。自己要涉及一些计算来实现