画图双缓冲

来源:互联网 发布:mac面料 编辑:程序博客网 时间:2024/04/29 10:18

void OnPaint()
{
 CPaintDC dc(this);
 CDC   memdc;
 CBitmap  bitmap;
 int   x, y, count;
 BOOL  do_stagger = FALSE;

 // Create a memory copy to draw to.
 memdc.CreateCompatibleDC(&dc);
 bitmap.CreateCompatibleBitmap(&dc, window_rect.right, window_rect.bottom);
 memdc.SelectObject(&bitmap);

 // Clear the background.
 memdc.FillRect(&window_rect, &background_brush);
 
 // Draw the icons.
   for (x = start_major, count = 0; count < number_of_icons; x += icon_increment, count++)
   {
    if (do_stagger)
    {
     memdc.DrawIcon(x, start_minor + stagger_distance, hicon_array[count]);
    }
    else
    {
     memdc.DrawIcon(x, start_minor, hicon_array[count]);
    }

    do_stagger = !do_stagger;
   }

 // Copy it to the screen.
 dc.BitBlt(0, 0, window_rect.right, window_rect.bottom, &memdc, 0, 0, SRCCOPY);

 // Delete the tempory resources.
 memdc.DeleteDC();
 bitmap.DeleteObject();
}

原创粉丝点击