关于SetWindowOrgEx与SetViewportOrgEx的用法

这两个API都是设置逻辑坐标原点的,但是两个的效果和作用是不一样的。
SetWindowOrgEx是将逻辑坐标原点向负方向移动。比如:dc.SetWindowOrg(50,100);假设初始状态下逻辑坐标原点是左上角。这句的作用是将原点向左移50个单位,向上移100个单位(用默认正方向),此时原点就移出了屏幕了。也就是左上角(设备坐标原点)现在的逻辑坐标是(50,100).

setViewportOrgEx也是设逻辑坐标原点的,它的作用是沿正方向移动坐标原点。
比如dc.SetViewportOrg(50,100);它的作用是将原点向右移50个单位,向下移100个单位。此时左上角(设备坐标原点)的逻辑坐标就成了(-50,-100)

你可以用下面语句试验:
dc.SetWindowOrg(50,100);
dc.TextOutW00,_T("dlfjkd"),13);
============
此时应该显示不出来。因为(0,0)点在屏幕外。

dc.SetViewportOrg(50,100);
dc.TextOutW(0,0,_T("dlfjkd"),6);
================
此时应该显示在向右50个单位,向下100个单位处。

dc.SetWindowOrg(50,100);
dc.SetViewportOrg(50,100);
dc.TextOutW(0,0,_T("dlfjkd"),6);
=============
此时显示在左上角,因为dc.SetWindowOrg(50,100);和dc.SetViewportOrg(50,100);相互抵消,所以逻辑坐标原点回到了默认位置。

你可能感兴趣的:(api)