雙緩沖避免圖形閃爍_第1頁(yè)
雙緩沖避免圖形閃爍_第2頁(yè)
雙緩沖避免圖形閃爍_第3頁(yè)
雙緩沖避免圖形閃爍_第4頁(yè)
雙緩沖避免圖形閃爍_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

引用MFCGDI(轉(zhuǎn)MFCGDI雙緩沖避免圖形閃爍(轉(zhuǎn)引用MFCGDI(轉(zhuǎn)MFCGDI雙緩沖避免圖形閃爍(轉(zhuǎn)多數(shù)人認(rèn)為MFC的繪圖函數(shù)效率很低,總是想尋求其它的解決方案。MFC的繪加上一些技巧,用MFC可以得到效率很高的繪圖程序。我想就我長(zhǎng)期(呵呵當(dāng)然也只有2年多)使用MFC繪圖的經(jīng)驗(yàn)談?wù)勎业囊恍┯^點(diǎn)。1、顯示的圖形為什么會(huì)閃爍OnDrawOnPaint函數(shù)中,OnDraw在進(jìn)行屏幕OnPaint進(jìn)行調(diào)用的。當(dāng)窗口由于任何原因需要重繪時(shí),總是先用比如:清楚屏幕時(shí)間為1s繪圖時(shí)間也是為1s,這樣在10s內(nèi)的連續(xù)重畫(huà)中就要重畫(huà)只會(huì)閃爍一次。這個(gè)也可以試驗(yàn),在OnDraw(CDC*pDC)中這樣寫(xiě):for(int{pDC-pDC-}2、如何避免閃}2、如何避免閃*staticCBrush*OnEraseBkgnd(CDC*pDC),3、如何實(shí)現(xiàn)雙緩CDCMemDC;//CBitmapMemBitmap;////CBitmap//CBitmappDC-4、如何提高繪圖的法忍受。怎么辦?只有再研究研究MFC的繪圖過(guò)程了。OnDraw(CDC*pDC)中繪制的圖并不法忍受。怎么辦?只有再研究研究MFC的繪圖過(guò)程了。OnDraw(CDC*pDC)中繪制的圖并不是所有都顯示了的,例如:你在OnDraw中畫(huà)了兩個(gè)矩形,在一次重繪中雖然兩個(gè)矩形的繪制函數(shù)都有執(zhí)行,但pDC中的裁剪區(qū)了。因?yàn)轱@示(往MFC設(shè)置的,它已經(jīng)為我們提高了顯示效率,在進(jìn)行復(fù)雜圖形的繪制時(shí)如何進(jìn)一步提高效率呢?那就只有去掉在裁剪區(qū)外的繪圖過(guò)程了??梢韵扔胮DC->GetClipBox()得voidCJhkljklView::OnDraw(CDC*{CJhkljklDoc*pDoc=//TODO:adddrawcodefornativedataintintCPenPOINTfor{}//CClientDCCRgnCBrushargn.CreatePolygonRgn(wfor{}//CClientDCCRgnCBrushargn.CreatePolygonRgn(w,5,1);//pointCPointpDC->FillRgn(&argn,}voidCJhkljklView::OnTimer(UINT{//TODO:Addyourmessagehandlercodehereand/ort}int{if(CView::OnCreate(lpCreateStruct)==-return-//}int{if(CView::OnCreate(lpCreateStruct)==-return-//TODO:Addyourspecializedcreationcodereturn}解決方法利用雙緩沖,首先觸發(fā)WM_ERASEBKGND,然后修改返定義變量CBitmap*m_pBitmapOldBackgroundCBitmapm_bitmapBackgroundCDCif(m_dcBackground.GetSafeHdc()==NULL||(m_bitmapBackground.m_hObject==NULL)){ct.Height());m_pBitmapOldBackground=m_dcBackground.SelectObject(&m_bitmapBackground);//DrawMeterBackground(&m_dcBackground,CBrushbrushFill,//brushFill.CreateSolidBrush(RGB(255,255,ct.Height());m_pBitmapOldBackground=m_dcBackground.SelectObject(&m_bitmapBackground);//DrawMeterBackground(&m_dcBackground,CBrushbrushFill,//brushFill.CreateSolidBrush(RGB(255,255,pBrushOld=}memDC.BitBlt(0,0,rect.Width(),&m_dcBackground,0,0,;intintCPenPOINTfor{}//CClientDCCRgnfor{}//CClientDCCRgnCBrushargn.Crea

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論