SetViewportExtEx (hdc, x, y, NULL) ; 设置视口范围
SetWindowOrgEx (hdc, x,y , NULL) ; 设置窗口坐标原点SetViewportOrgEx (hdc, x, y , NULL) ; 设置视口坐标原点
SetMapMode(hdc, MM_ISOTROPIC);
SetWindowExtEx(hdc,10,10,NULL); 表示逻辑单位范围为10
SetViewportExtEx(hdc, 100, 100, NULL); 表示 100像素为一个单位
TextOut(hdc,3,3,TEXT("123456"),6); 如果是MM_TEXT 那么显示是在 30,30 .为什么?上面2行代码就是说10个逻辑单位代表100个像素点,那么你就可以算出来啦
TextOut(hdc,10,10,TEXT("123456"),6); 显示最大范围 那么就在 100,100的位置显示
SetMapMode(hdc, MM_ISOTROPIC);
SetWindowExtEx(hdc,10,5,NULL); 如果不同,取最小值
SetViewportExtEx(hdc, 100, 50, NULL);如果不同,取最小值
TextOut(hdc,10,10,TEXT("123456"),6); 那么在100,100的位置显示
设置窗口逻辑坐标原点
SetWindowOrgEx(hdc,100,100,NULL); // 设置窗口逻辑坐标原点的位置,就是说 你如果输出坐标是100,100那么显示在不设置窗口坐标时,0,0的位置
TextOut(hdc,200,200,TEXT("123456"),6); 这行代码显示在100,100的位置。
设置视口的坐标原点
SetViewportOrgEx(hdc,100,100,NULL); 把视口的窗口原点0,0的位置,移到了100,100的位置
TextOut(hdc,0,0,TEXT("123456"),6); 那么这句话显示在 100,100的位置
如果组合起来的话,拆开分析,下面看个例子
SetWindowOrgEx(hdc, 200 ,200, NULL);// 200,200 表示窗口原点的位置
SetViewportOrgEx(hdc,500,500,NULL);// 窗口原点移动到了500,500的位置
TextOut(hdc,0,0,TEXT("123456"),6);// 那么它显示在什么位置?
SetWindowOrgEx(hdc, 0 ,0, NULL);// 还原
SetViewportOrgEx(hdc,0,0,NULL);//
TextOut(hdc,300,300,TEXT("1234567"),7);// 和上面显示在同一个位置,我还多加了一个数字 7