CreateCompatibleDC與BitBlt 學習

CreateCompatibleDC與BitBlt

CreateCompatibleDC

建立一個與指定設備一致的內存設備描述表。api

HDC CreateCompatibleDC(HDC hdc //設備描述表句柄);函數

參數 hdcspa

現有的設備描述表的一個句柄,若是這個句柄爲NULL,則函數建立一個和應用程序當前屏幕一致的內存設備描述表。htm

返回值 若是函數調用成功,則返回一個內存設備描述表句柄;不然返回NULL。對象

說明
建立一個與特定設備場景一致的內存設備場景
返回值
Long,新設備場景句柄,若出錯則爲零
參數表
參數 類型及說明
hdc Long,設備場景句柄。新的設備場景將與它一致。也可能爲0以建立一個與屏幕一致的設備場景
註解

在繪製以前,先要爲該設備場景選定一個位圖。再也不須要時,該設備場景可用DeleteDC函數刪除。刪除前,其全部對象應回覆初始狀態內存

BitBlt( //圖形拷貝
  HMDC0, //目標設備場景
  x0,y0 //目標左上角座標
  w,h //目標圖形寬、高
  HMDC1, //源設備場景
  x1,y1 //源左上角座標
  SRCCOPY //拷貝方式,這裏是直接拷貝);
ci

使用方法:get

CreateCompatibleDCit

CDC MemDC;//首先定義一個顯示設備對象
CBitmap MemBitmap;//定義一個位圖對象
table

//隨後創建與屏幕顯示兼容的內存顯示設備
MemDC.CreateCompatibleDC(NULL);
//這時還不能繪圖,由於沒有地方畫^_^
//下面創建一個與屏幕顯示兼容的位圖,至於位圖的大小嘛,能夠用窗口的大小
CRect rc;
GetClientRect(&rc);

MemBitmap.CreateCompatibleBitmap(pDC,rc.Width(),rc.Height());
//將位圖選入到內存顯示設備中
//只有選入了位圖的內存顯示設備纔有地方繪圖,畫到指定的位圖上
CBitmap* pOldBit=MemDC.SelectObject(&MemBitmap);

//先用背景色將位圖清除乾淨,這裏我用的是白色做爲背景
//你也能夠用本身應該用的顏色
MemDC.FillSolidRect(0,0,rc.Width(),rc.Height(),RGB(255,255,255));

......//一些繪製過程


//將內存中的圖拷貝到屏幕上進行顯示
pDC->BitBlt(0,0,rc.Width(),rc.Height(),&MemDC,0,0,SRCCOPY);

//繪圖完成後的清理
MemBitmap.DeleteObject();
MemDC.DeleteDC();

尤爲是最後兩部:MemBitmap.DeleteObject();MemDC.DeleteDC();這是清理和回收內存的!

相關文章
相關標籤/搜索