|
SOFTIST
编程方法筆記 →目录
SetWindowOrgとSetViewportOrg(VC++)
调用了SetMapMode()函数后,描画領域的坐标轴的方向就被决定了。比如SetMapMode(MM_LOMETRIC)函数是将Y軸的方向定为指向上方,X軸的方向定为指向右方。坐标系的原点与逻辑描画領域的左上角相重叠。如果没有其它的設定,在描画領域里描画时,X坐标值要为正,Y坐标值要为負,不然的话就画到了区域外,什么也看不见。 ]
例1:下面的程序不能在画面的可见区域上画出正方形。
pDC->SetMapMode(MM_LOMETRIC);
pDC->Rectangle(0, 0, 200, 200);
调用SetWindowOrg()函数,可以使逻辑描画領域的原点的坐标,以逻辑単位上下左右移動。
例2:下面的程序把原点的逻辑坐标移动到(100, 100)的位置上,可以在画面上画出正方形的一部分了。
pDC->SetMapMode(MM_LOMETRIC);
pDC->SetWindowOrg(100, 100);
pDC->Rectangle(0, 0, 200, 200);
SetViewportOrg()函数的功能是,以设备単位(=物理点,=像素)将逻辑描画領域的原点在画面上移動。
例3:下面的程序把逻辑描画領域的原点以像素为単位移动到画面的正中央。正方形全部被显示了。
CRect rect;
GetClientRect (&rect);
pDC->SetMapMode(MM_LOMETRIC);
pDC->SetWindowOrg(100, 100);
pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);
pDC->Rectangle(0, 0, 200, 200);
当然,像Rectangle()那样的描画函数(API)的参数用的是逻辑坐标。
|