转自
http://zhidao.baidu.com/question/32435553.html
默认原点应该是在最左上交吧?因为我pDC->TextOut(0, 0, "TEST");在最左上出现了。
但是为什么pDC->SetWindowOrg(CPoint(5,5))后这个TEST更往左上了。我想应该把原点设在5,5了这个TEST应该是在原来位置稍微右下一点?为什么会这样?
最佳答案
SetWindowOrg用的是实际坐标,dc的所有GDI函数产生结果时用的是显示坐标( VC++的GDI中有两套坐标,一套逻辑坐标(也就是实际坐标,logic context),一套显示坐标(context coordinate) ),
SetWindowOrg是把逻辑坐标向右下移动(5,5),即显示坐标向左上移动;如果使用SetViewportOrg就可以了。
转自
http://baike.baidu.com/view/4059670.htm
SetWindowOrg是设置设备上下文的窗口初始位置。它和设备上下文窗口一起说明了GDI如何将逻辑坐标中的点映射到实际设备坐标中。换言之,它们说明了GDI如何将逻辑坐标转换为设备坐标。
CDC::SetWindowOrg
CPoint SetWindowOrg(int x ,int y );
CPoint SetWindowOrg(POINT point )
//下面是原创
//1. SetWindowOrg
CClientDC dc(this);
//将逻辑坐标(200, 200) 映射为 设备坐标的(0, 0),
dc.SetWindowOrg(200, 200);
dc.Rectangle(200, 200, 300, 300);
//2. SetViewportOrg
CClientDC dc(this);
dc.SetViewportOrg(100, 100);
dc.Rectangle(0, 0, 100, 100);