MFC改變座標系
阿新 • • 發佈:2018-12-12
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表示垂直方向邏輯座標的範圍
當改變視窗大小時,以視窗的寬度或高度較小的方向為標準