MFC中的圖象儲存--關於相容DC和CMetaFileDc的用法
阿新 • • 發佈:2019-02-16
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); //將上次的繪圖操作儲存到該
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); //將上次的繪圖操作儲存到該