最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于WTL 雙緩沖(double buffer)繪圖的分析詳解

 更新時間:2013年05月17日 16:16:56   作者:  
本篇文章是對WTL下使用雙緩沖(double buffer)繪圖進行了詳細的分析介紹,需要的朋友參考下
WTL中有兩個Mix-in類: CDoubleBufferImplCDoubleBufferWindowImpl,用于創(chuàng)建雙緩沖繪圖窗口,用法非常簡單。
下面創(chuàng)建了一個普通的WTL窗口類,在窗口的客戶區(qū)中有大量的繪圖工作,使用CDoubleBufferImpl類來消除繪圖時的閃爍現(xiàn)象:
復(fù)制代碼 代碼如下:

const COLORREF WHITE_COLOR = RGB(255,255,255);
const COLORREF BLUE_COLOR = RGB(0,0,255);
class CMainWindow :
 public CWindowImpl<CMainWindow,CWindow,CSimpleWinTraits>,
 public CDoubleBufferImpl<CMainWindow>
{
public:
 typedef CMainWindow _thisClass;
 typedef CDoubleBufferImpl<_thisClass> _baseDblBufImpl;
 BEGIN_MSG_MAP(CMainWindow)
  MSG_WM_CREATE(OnCreate)
  MSG_WM_DESTROY(OnDestroy)
  CHAIN_MSG_MAP(_baseDblBufImpl)
 END_MSG_MAP()
 int OnCreate(LPCREATESTRUCT lpCreateStruct)
 {
  m_RectPen.CreatePen(PS_SOLID,1,BLUE_COLOR);
  return 0;
 }
 void OnDestroy()
 {
  PostQuitMessage(0);
 }

 void OnPaint(CDCHandle)
 {
  CPaintDC dc(m_hWnd);
  DoPaint(dc.m_hDC);
 }
 void DoPaint(CDCHandle dc)
 {
  CRect rc;
  GetClientRect(&rc);
  dc.FillRect(&rc,WHITE_COLOR);
  HPEN hOldPen = dc.SelectPen(m_RectPen);
  const int width = 5;
  int x = 0;
  int count = rc.Width()/width;
  int height = 0;
  for (int i=0; i<count; i++)
  {
   height = (int)((double)rand()*rc.Height())/RAND_MAX;
   dc.Rectangle(x,rc.Height(),x+width,rc.Height()-height);
   x += width;
  }
  dc.SelectPen(hOldPen);
 }
 /*
 void DoPaint(CDCHandle dc)
 {
  CRect rc;
  GetClientRect(&rc);
  int width = rc.Width(), height = rc.Height();
  //use GDI+ to draw in the client area
  Graphics g(dc.m_hDC);
  SolidBrush whiteBrush(Color(255,255,255));
  g.FillRectangle(&whiteBrush,0,0,width,height);
  Pen bluePen(Color(0,0,255));
  const int dx = 5;
  int count = width/dx;
  int x = 0, y = 0, h = 0;
  for (int i=0;i<count;i++)
  {
   h = ((double)rand()*height)/RAND_MAX;
   g.DrawRectangle(&bluePen,x,y,dx,h);
   x += dx;
  }
 }
 */
private:
 CPen m_RectPen;
};

值得一提的是,Windows Vista操作系統(tǒng)增加了對Double buffered paint的內(nèi)建支持,這里有一篇文章介紹如何在Win32程序中使用這些API:
Using Windows Vista Built-In Double Buffering
在WTL中使用Vista提供的這一功能非常容易,最新的WTL庫中提供了CBufferedPaintImpl和CBufferedPaintWindowImpl兩個類,這兩個類的用法和前面提到的兩個WTL自帶的雙緩沖類幾乎一樣。區(qū)別僅僅是所重載的DoPaint()函數(shù)的參數(shù)稍有不同。
對于CBufferedPaintImpl類,所需重載的DoPaint()函數(shù)的樣子如下所示:
復(fù)制代碼 代碼如下:

void DoPaint(CDCHandle dc, RECT& rect)
{
 CRect rc(rect);
 dc.FillSolidRect(&rc,WHITE_COLOR);
 HPEN hOldPen = dc.SelectPen(m_RectPen);
 const int width = 5;
 int x = 0;
 int count = rc.Width()/width;
 int height = 0;
 for (int i=0; i<count; i++)
 {
  height = (int)((double)rand()*rc.Height())/RAND_MAX;
  dc.Rectangle(x,rc.Height(),x+width,rc.Height()-height);
  x += width;
 }
 dc.SelectPen(hOldPen);
}

相關(guān)文章

  • Linux中利用c語言刪除某個目錄下的文件

    Linux中利用c語言刪除某個目錄下的文件

    這篇文章主要給大家介紹了Linux中利用c語言刪除某個目錄下文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • C語言超詳細文件操作基礎(chǔ)上篇

    C語言超詳細文件操作基礎(chǔ)上篇

    這篇文章主要為大家詳細介紹了C語言的文件操作,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C語言進階學(xué)習(xí)之指針

    C語言進階學(xué)習(xí)之指針

    關(guān)于指針,其是C語言的重點,C語言學(xué)的好壞,其實就是指針學(xué)的好壞。其實指針并不復(fù)雜,學(xué)習(xí)指針,要正確的理解指針,本片文章能給就來學(xué)習(xí)一下
    2021-09-09
  • VC實現(xiàn)動態(tài)菜單的創(chuàng)建方法

    VC實現(xiàn)動態(tài)菜單的創(chuàng)建方法

    這篇文章主要介紹了VC實現(xiàn)動態(tài)菜單的創(chuàng)建方法,需要的朋友可以參考下
    2014-07-07
  • C語言實現(xiàn)簡單掃雷源碼

    C語言實現(xiàn)簡單掃雷源碼

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單掃雷源碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • OPENMP?SECTIONS?CONSTRUCT原理示例解析

    OPENMP?SECTIONS?CONSTRUCT原理示例解析

    這篇文章主要為大家介紹了OPENMP?SECTIONS?CONSTRUCT原理示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • C語言實現(xiàn)飛機游戲(1)

    C語言實現(xiàn)飛機游戲(1)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)飛機游戲的第一部分,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 算法之排列算法與組合算法詳解

    算法之排列算法與組合算法詳解

    這篇文章主要介紹了算法之排列算法與組合算法詳解,本文以字典序法、遞歸法為例講解了排列算法、全組合算法等,需要的朋友可以參考下
    2014-08-08
  • C語言的Struct Hack筆記

    C語言的Struct Hack筆記

    這篇文章主要介紹了C語言的Struct Hack例子,個人的一篇筆記,需要的朋友可以參考下吧
    2014-04-04
  • C/C++使用Zlib實現(xiàn)文件的壓縮與解壓

    C/C++使用Zlib實現(xiàn)文件的壓縮與解壓

    zlib 是一個開源的數(shù)據(jù)壓縮庫,旨在提供高效、輕量級的壓縮和解壓縮算法,本文將介紹如何使用 zlib 庫進行數(shù)據(jù)的壓縮和解壓縮,以及如何保存和讀取壓縮后的文件,感興趣的可以了解下
    2023-11-11

最新評論

两当县| 奉节县| 巴东县| 汉寿县| 黄龙县| 天津市| 天长市| 贵德县| 林芝县| 贵阳市| 萨迦县| 龙山县| 陈巴尔虎旗| 天津市| 长宁县| 陈巴尔虎旗| 壶关县| 乐至县| 东乡县| 日土县| 库伦旗| 漯河市| 崇左市| 南开区| 柳林县| 高邮市| 万载县| 沅陵县| 普定县| 邻水| 西丰县| 泽库县| 山东| 拜城县| 石阡县| 江川县| 鄯善县| 阿尔山市| 上栗县| 宝山区| 玛纳斯县|