1. 程式人生 > >MFC中的圖象儲存--關於相容DC和CMetaFileDc的用法

MFC中的圖象儲存--關於相容DC和CMetaFileDc的用法

CPtrArray類物件中,然後在OnDraw函式中取出相關資訊繪圖。

2、使用相容DC:先將當前圖象貼到一個記憶體CBitmap物件塊中,然後再用相容DC將其SelectObject,OnDraw函式中在拷貝相容DC的內容到當前的繪圖DC中完成重繪操作。
//儲存當前點陣圖的操作
        m_dcCmp.CreateCompatibleDC(&dc);  //建立當前繪圖DC的相容DC
        CRect rect;
        GetClientRect(&rect);
        CBitmap bitmap;
        bitmap.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height());   //將當前繪圖DC點陣圖資訊頭貼到記憶體bitmap中
        m_dcCmp.SelectObject(&bitmap);  //在相容DC中選入記憶體bitmap
        m_dcCmp.BitBlt(0, 0, rect.Width(), rect.Height(), &dc, 0, 0, SRCCOPY);  //將當前繪圖DC的眼色表和象素資料塊拷貝到相容DC
//OnDraw函式中重繪點陣圖的操作:
    CRect rect;
    GetClientRect(&rect);
    pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &m_dcCmp, 0, 0, SRCCOPY); //將相容DC的內容拷貝到當前繪圖DC輸出

3、使用CMetaFileDc類:首先建立一個CMetaFileDC物件來關聯一個檔案或者一個記憶體塊,然後使用這個物件的繪圖函式來繪圖,呼叫該物件的Close函式返回一個HMETAFILE控制代碼,使用CDC的PlayMetaFile函式完成繪圖操作,最後::DeleteMetaFile(hmetafile)釋放這個控制代碼。
//在OnDraw函式中:
    HMETAFILE hmetafile; 
    hmetafile = m_dcMetaFile.Close();  //返回該CMetaFileDC物件的控制代碼
    pDC->PlayMetaFile(hmetafile);  //使用繪圖DC繪圖
    m_dcMetaFile.Create();  //用該CMetaFileDC物件關聯一個新的記憶體塊來儲存下次的繪圖操作
    m_dcMetaFile.PlayMetaFile(hmetafile);  //將上次的繪圖操作儲存到該