MFC雙緩衝做圖解決刷新閃屏問題



1、雙緩衝做圖基本思路 函數

使用bitblt函數,其原理是能夠支持圖形塊的快速複製;因此,咱們能夠先在內存中做圖,而後使用BitBlt函數將內存中的圖片複製到前臺,同時禁止背景刷新,這樣就消除了閃爍。 this

2、雙緩衝做圖的實現步驟(如下顯示基於OnPaint函數) spa

CPaintDC dc(this);
	CRect rectClient;
	CDC dcMem,dcBkgnd;
	CBitmap bitmapTemp, *pOldBitmap;
	//獲取窗口信息
	GetClientRect(&rectClient);
	//建立內存位圖
	bitmapTemp.CreateCompatibleBitmap(&dc, rectClient.Width(), rectClient.Height());
	//建立內存位圖
	dcMem.CreateCompatibelBitmap(&dc);            //依附窗口DC建立兼容的DC
	//將內存位圖選入內存dc
	pOldBitmap = dcMem.SelectObject(&bitmapTemp);
	//填充顏色
	dcMem.FillSolidRect(rectClient,RGB(255,125,0));   //主要的做圖操做
	//繪製圖片到主dc
	dc.BitBlt(0, 0, rectClient.Width(), rectClient.Height(), &dcMem, 0, 0, SRCCOPY);
	//內存復位
	dcMem.SelectObject(pOldBitmap);


3BitBlt函數說明: code

函數原型 圖片

BOOL BitBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int
nXSrc,
int nYSrc, DWORD dwRop); 內存

參數 原型

hdcDest:指向目標設備環境的句柄。 it

nXDest:指定目標矩形區域左上角的X軸邏輯座標。 class

nYDest:指定目標矩形區域左上角的Y軸邏輯座標。 原理

nWidth:指定源和目標矩形區域的邏輯寬度。

nHeight:指定源和目標矩形區域的邏輯高度。

hdcSrc:指向源設備環境的句柄。

nXSrc:指定源矩形區域左上角的X軸邏輯座標。

nYSrc:指定源矩形區域左上角的Y軸邏輯座標。

dwRop:指定光柵操做代碼。這些代碼將定義源矩形區域的顏色數據,如何與目標矩形區域的顏色數據組合以完成最後的顏色。

相關文章
相關標籤/搜索