1. 程式人生 > >MFC改變座標系

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表示垂直方向邏輯座標的範圍

                                               當改變視窗大小時,以視窗的寬度或高度較小的方向為標準