MFC改变坐标系
Posted zuoyou151
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC改变坐标系相关的知识,希望对你有一定的参考价值。
1.在MainFrm中的PreCreateWindow中设置默认窗口大小
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWndEx::PreCreateWindow(cs) ) return FALSE; // TODO: 在此处通过修改 // CREATESTRUCT cs 来修改窗口类或样式 //设置默认窗口大小为400pixel*300pixel cs.cx = 400; cs.cy = 300; return TRUE; }
2.在View类中添加OnPaint()消息处理函数
void C透视投影View::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: 在此处添加消息处理程序代码 // 不为绘图消息调用 CView::OnPaint() OnPrepareDC(&dc); OnDraw(&dc); CRect rc; //矩形结构 GetClientRect(&rc); //获得窗口库视区 int cx = rc.right; int cy = rc.bottom; dc.SetMapMode(MM_ISOTROPIC); //X=Y dc.SetWindowExt(1000, 1000); //设置逻辑窗口,默认窗口原点为(0,0) dc.SetViewportExt(cx, -cy); //定义输出视口,X右Y上为正 dc.SetViewportOrg(cx / 2, cy / 2);//定义视口原点为客户区中心 dc.Ellipse(-500, 500, 500, -500); //绘制椭圆与客户去外接的椭圆 //绘制水平垂直的四条半径 dc.MoveTo(0, 0); dc.LineTo(500, 0); dc.MoveTo(0, 0); dc.LineTo(0, 500); dc.MoveTo(0, 0); dc.LineTo(0, -500); dc.MoveTo(0, 0); dc.LineTo(-500, 0); }
MM_ISOTROPIC:逻辑单位被映射为具有等刻度轴的任意单位,x轴上的一个单位被映射为
y轴上的一个单位。
SetWindowExt(int cx,int cy):cx表示水平方向逻辑坐标的范围
cy表示垂直方向逻辑坐标的范围
当改变窗口大小时,以窗口的宽度或高度较小的方向为标准
以上是关于MFC改变坐标系的主要内容,如果未能解决你的问题,请参考以下文章
VS C++ MFC 控件怎么修改大小?属性里 没有size一项。。难道只能用鼠标去拉着看左下角的坐标和大小吗??