MFC雙緩沖繪圖與GDI+繪圖方法


MFC雙緩沖繪圖:

CDC *cdc = this->GetDC();
 
CDC MemDC; //首先定義一個顯示設備對象
CBitmap MemBitmap;//定義一個位圖對象
 
CRect rect;
this->GetClientRect(rect);
 
MemDC.CreateCompatibleDC(NULL);//隨后建立與屏幕顯示兼容的內存顯示設備
//下面建立一個與屏幕顯示兼容的位圖,至於位圖的大小嘛,可以用窗口的大小
MemBitmap.CreateCompatibleBitmap(cdc, gdirect.Width(), gdirect.Height());
 
//將位圖選入到內存顯示設備中
//只有選入了位圖的內存顯示設備才有地方繪圖,畫到指定的位圖上
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
 
//先用背景色將位圖清除干凈,顏色自選
MemDC.FillSolidRect(0,0, gdirect.Width(), gdirect.Height(),RGB(255,255,255));
//這里加入自己的畫圖代碼,此時畫圖都是在內存中完成,操作對象是MemDC
//然后將內存中的圖拷貝到屏幕上進行顯示
cdc->BitBlt(0,0, rect.Width()-20, rect.Height(),&MemDC,0, scrollpos*140,SRCCOPY);
//繪圖完成后清理臨時對象
MemBitmap.DeleteObject();
MemDC.DeleteDC();
ReleaseDC(cdc);

GDI+繪圖方法

將雙緩沖方法和GDI+繪圖方法結合起來可以方便高效的把圖片顯示在控件中。

#include <GdiPlus.h>//首先要包含此頭文件
Gdiplus::GdiplusStartupInput m_GdiplusStartupInput;
ULONG_PTR m_GdiplusToken;
Gdiplus::GdiplusStartup(&m_GdiplusToken,&m_GdiplusStartupInput,NULL);//調用此函數啟用GDI+功能
 
Gdiplus::Graphics g(MemDC.m_hDC);//繪圖
//使用gdi+加載其他類型的資源文件,jpg png都行
Gdiplus::Image *ii;
ii = Gdiplus::Image::FromFile("c:\\img.jpg");
g.DrawImage(ii, Gdiplus::Rect());
delete ii;
}
g.ReleaseHDC(MemDC.m_hDC);
 
Gdiplus::GdiplusShutdown(m_GdiplusToken);//使用完成調用此函數關閉GDI+庫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM