MFC改變坐標系
阿新 • • 發佈:2018-12-12
默認 高度 繪圖 mod pmod 添加 his ext rto
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改變坐標系