一普通顯示:現在的VC顯示圖片非常方便,遠不是VC6.0那個年代的技術可比,而且支持多種格式的如JPG,PNG。?
?????CImage _img;
?????初始化:
?????_img.Load(L"map.png");
?
?????顯示:OnPaint事件中
?????CRect rect;
?????this->GetClientRect(&rect);
?????HDC hdc=::GetDC(this->m_hWnd);
?????_img.Draw(hdc,rect);
?????幾行代碼就解決了。
二雙緩沖顯示:【因為是用了兩個CImage實例,要不叫偽雙緩沖吧,但實現方式確實是雙緩沖,可以完成拼圖顯示等功能,當然防刷新閃爍是肯定有效的】
????當時查了一天的百度,基本沒用,第二天起床前想到了一個辦法,其實很簡單。用Datch什么的分離位圖,反而無效,咱百度谷歌都沒找到相關資料,所以這也算原創了吧。
????CImage img0,img1;
????img0.Load("*.png");
????img1.Create(w,h,img0.GetBPP());
????HDC tmpdc=img1.GetDC();
??
????先將img0的內存中的圖畫到img1的DC上,再用img1.Draw到顯示設備中。
????img0.StretchBlt(tmpdc,0,0,desw,desh,Scr.x,Scr.y,desw,desh);//將源圖中RECT(scr.x,scr.y,desw,desh) 區域的圖復制到目標區域。
????img1.Draw(pdc->m_hDC,r);//r是顯示區域,pdc是顯示設備。
?
?