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

MFC改變坐標系

默認 高度 繪圖 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改變坐標系