SetWindowOrg(50,100);设置窗口客户区左上角坐标为(50,100),绘图坐标原点向左上方移动;
SetViewportOrg(50,100);绘图坐标原点向右下方移动。例子1
pDC->SetWindowOrg(50,100);
pDC->MoveTo(0,0); // 实际绘图坐标在窗口坐标(-50,-100);例子2
pDC->SetViewportOrg(50,100);
pDC->MoveTo(0,0); // 实际绘图坐标在窗口坐标(50,100);例子3
pDC->SetWindowOrg(50,100);
pDC->SetViewportOrg(50,100);
pDC->MoveTo(0,0); // 实际绘图坐标在窗口坐标(0,0);例子4
pDC->SetWindowOrg(-50,-100);
pDC->SetViewportOrg(50,100);
pDC->MoveTo(0,0); // 实际绘图坐标在窗口坐标(100,200);

解决方案 »

  1.   

    Softsprite基本上说对了,不过这样说还是不够明白。
    实际上如果你看过图形学的书就很容易明白了,这种坐标方式与图形学中的定义方式是相同的。
    原始的坐标是窗口或视口的左上角被定一为(0,0)点,即原点。水平坐标轴是从原点水平向右指向右上角点为正方向,竖直坐标轴为从原点竖直向下指向左下角点为正方向。如下图:
    *————————〉x轴
    |(0,0)
    |
    |
    |
    \/
    y轴
    SetWindowOrg(50,100)是设定这里的(0,0)为(50,100),是缺省的原坐标系统进行了坐标变换,是的原坐标原点向上移动了100个象素点,向左移动了50个象素点。
      

  2.   

    to softsprite:     窗口客户区 是 视口 吗?
        如果 pDC->SetWindowOrg(50,100);
        视口的原点在那里?谢谢 qingrun 的讲解图
      

  3.   

    最初始时,窗口客户区正好是视口。SetWindowOrg或SetViewportOrg后视口就偏移了。pDC->SetWindowOrg(50,100);后,视口的原点在(-50,-100)
        
      

  4.   

    to softsprite: 您说:最初始时,窗口客户区正好是视口。SetWindowOrg或SetViewportOrg后视口就偏移了。 我认为:    (1) 窗口左上角永远是(0,0)而且是设备坐标系。SetWindowOrg怎么设置
    都不会影响视口的原点。SetViewportOrg用来改变视口原点,

    pDC->SetWindowOrg(50,100);后,视口的原点在(-50,-100);(2)//我认为视口原点仍是(0,0),没有SetViewportOrg  视口原点就默认为(0,0)(3)例如: pDC->SetViewportOrg(50,50);
                      pDC->Rectangle(CRect(-50,-50,150,150));默认pDC->SetWindowOrg(0,0)//代码中没有,但系统默认的。
    意思是窗口逻辑坐标系中的一点(0,0),在视口设备坐标系中就是(50,50),
    同理     窗    --- - -    (50,50),  视 -- -  (100,100)。 
    我认为视口设备坐标系就是窗口客户区的坐标系。您说的 :
    例子1:   pDC->SetWindowOrg(50,100);
           pDC->MoveTo(0,0); // 实际绘图坐标在窗口坐标(-50,-100);
    我认为不对。
    应理解为: 窗口逻辑中一点(0,0)在视口设备(也就是窗口客户区(我们能看到的))
    中为(50,100); pDC用的坐标都是窗口逻辑坐标。
       应该是画图在窗口逻辑坐标系中(0,0),显示在视口设备坐标系的(50,100)处。我如果有理解不对的地方, 请您及时答复。
    非常感谢           
                            pDC->SetWindowOrg(20,20);
    pDC->SetViewportOrg(50,50);    pDC->Rectangle(CRect(0,0,100,100));
      

  5.   

    *————————〉x轴
    ¦(0,0)
    ¦
    ¦
    ¦
    \/
    y轴
    这是默认映射方式,也可以自已定义的,轴和长度都可以定义。
    还有两个函数,
    ClientToScreen()
    ScreenToClient() 
    十分有用,尤其在LBUTTONDOWN的时候,
    你要真的是初\学者,,强烈建议你DOWN一份我的汉化VC类库帮助,
    在dearmite.top263.net
    dearmite.myetang.com上面
      

  6.   

    谢谢iamfool的  帮助文件。很不错。