MFC雙緩衝技術(Gdi )

2021-08-20 03:02:07 字數 1147 閱讀 3977

1.建立乙個乙個最簡視窗(見前文)

2.在stdafx.h中新增對gdi+的支援

#include#pragma comment(lib,"gdiplus.lib")

using namespace gdiplus;

ulong_ptr m_tokengdiplus;

gdiplus::gdiplusstartupinput input;

gdiplus::gdiplusstartupoutput output;

在其initinstance函式實現中新增

status s=gdiplusstartup(&m_tokengdiplus,&input,&output);
在其exitinstance函式實現中新增

gdiplus::gdiplusshutdowm(m_tokengdiplus);
3.在cmainframe類中新增私有成員

image* img;

rectf rc;

4。在cmainframe的建構函式中新增

img=image::fromfile(_t("res/名"));//放在res檔案內
4.在cmainframe類中新增onpaint()函式(類嚮導),修改onpaint()函式

void cmainframe::onpaint()

::bitblt(hdc, 0, 0, rc.width, rc.height, m_dcmemory.getsafehdc(), 0, 0, srccopy);//將快取dc的內容複製到螢幕

releasedc(pdc);//只有自己建立的cdc才能使用deletedc

m_dcmemory.selectobject(poldbitmap);

m_dcmemory.deletedc();//自己建立的

deleteobject(bmp);

}

除錯

MFC 雙緩衝技術

在做俄羅斯方塊遊戲的時候,遇到遊戲過程中螢幕閃爍問題,解決辦法如下 使用雙緩衝技術解決螢幕閃爍 修改檢視類的ondraw 函式 void cmytetrisview ondraw cdc pdc 修改檢視類的drawimage 函式 cmytetrisview 訊息處理程式 void cmytetr...

mfc雙緩衝技術

mfc繪圖時,頻繁的重新整理會導致螢幕閃爍現象,採用雙緩衝技術可以解決閃爍問題。主要方法是將影象先存在記憶體中,然後一次性顯示在螢幕上 步驟 去掉背景重新整理 bool c上位機view onerasebkgnd cdc pdc 在view類中修改ondraw函式 crect rect getcli...

GDI 雙緩衝實現

gdi 使用雙緩衝繪圖 我再來詳細解釋一下剛才實現雙緩衝的具體步驟 1 在記憶體中建立一塊 虛擬畫布 bitmap bmp new bitmap 600,600 2 獲取這塊記憶體畫布的graphics引用 graphics g graphics.fromimage bmp 3 在這塊記憶體畫布上繪...