我在ondraw函数里面写入了       
         pDC->MoveTo(100,100);
         pDC->LineTo(120,100);
pDC->LineTo(130,110);
pDC->LineTo(270,110);
pDC->LineTo(280,100);
pDC->LineTo(300,100);
pDC->LineTo(200,200);
pDC->LineTo(100,100);
pDC->MoveTo(100,100);
我通过这种方法的图是倒过来的,我如何使它变成正的 (绕y=200)镜像
请告诉我具体操作步骤

解决方案 »

  1.   

    坐标变化就可以了,定义一个变化矩阵,然后让它y轴移动到200,并将y坐标缩放-1倍就可以了。
    转换矩阵的知识,可以上网查看。MSDN的GDI+的参考文档中详细的介绍了坐标变化。
      

  2.   

    ××::OnDraw(...)
    {
             C????Doc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    // 原始图
    pDC->MoveTo(100,100);
             pDC->LineTo(120,100);
    pDC->LineTo(130,110);
    pDC->LineTo(270,110);
    pDC->LineTo(280,100);
    pDC->LineTo(300,100);
    pDC->LineTo(200,200);
    pDC->LineTo(100,100);
    pDC->MoveTo(100,100);// 下面的操作就是把它倒过来
    pDC->SetMapMode(MM_ANISOTROPIC);
    CSize sizeV = pDC->GetViewportExt();
    pDC->SetViewportExt(sizeV.cx, -sizeV.cy);
    pDC->SetViewportOrg(0, 200);
    pDC->MoveTo(100,100);
             pDC->LineTo(120,100);
    pDC->LineTo(130,110);
    pDC->LineTo(270,110);
    pDC->LineTo(280,100);
    pDC->LineTo(300,100);
    pDC->LineTo(200,200);
    pDC->LineTo(100,100);
    pDC->MoveTo(100,100);
    }结果就是屏幕上一个正,一个倒的图像
    把SetMapMode前面的绘制函数去掉,就达到你的目的详细说明,请参看这个:
    http://community.csdn.net/Expert/topic/4400/4400246.xml?temp=.4652216
      

  3.   

    建议按照下面的方式设置坐标系:
             CWindowsmapDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc); CRect rect;
    pDC->GetWindow()->GetClientRect(&rect);
    pDC->SetMapMode(MM_ANISOTROPIC);
    CSize sizeV = pDC->GetViewportExt();
    pDC->SetViewportExt(sizeV.cx, -sizeV.cy);
    pDC->SetViewportOrg(0, rect.Height());这样,以后绘制的时候, 窗口的左下是00坐标, 右侧是x正向, 上面是y正向
    和我们常用的笛卡儿坐标系的方式一直