pDC->SetMapMode(MM_ISOTROPIC);
pDC->SetWindowExt(6400,4800);
pDC->SetViewportExt(640,480);
pDC->SetViewportOrg(0,0)
我想要把中心点作为坐标原点,X轴向右,Y轴向上
到底该具体怎么写code阿?我看了一上午以前的帖子和书了,都没弄明白。
看这篇文章我想你可以明白:
http://www.powerba.com/develop/vc/article/20010621002.htm
用如下代码:
void CTtView::OnDraw(CDC* pDC)
{
CTtDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetViewportOrg(rect.right/2,rect.bottom/2);
pDC->SetViewportExt(rect.right,rect.bottom);
pDC->SetWindowOrg(0,0);
pDC->SetWindowExt(1000,-1000);
pDC->MoveTo(150,150);
pDC->LineTo(-150,-200);
pDC->LineTo(150,-150);
pDC->LineTo(150,150);
}
代码分析:
1. 用 pDC->SetViewportOrg(rect.right/2,rect.bottom/2); 设置视口的原点。
2. 用pDC->SetViewportExt(rect.right,rect.bottom);和pDC->SetWindowExt(1000,-1000);来确定设备坐标和逻辑坐标的单位对应关系。
3. 因为逻辑窗范围和视口范围的符号不一致,纵坐标取反,所以Y轴向上为正。
在CDC上面做,多没意思啊,除非你的模型是整数模型。
如果是浮点模型,强烈建议你自己作变换。
============================================================================
提问题时要在标题中简明扼要的说明 给我发信息请附带原帖地址
http://www.betajin.com/alphasun/index.htm
http://alphasun.18en.com/ http://shakingtoolkit.9126.com/
DocWizard C++程序文档自动生成工具 | Wave OpenGL | HttpProxy | AjaxParser词法分析