GDI绘图怎么实现双缓冲,修改自TPNGButton无解

2025-02-26 03:24:01
推荐回答(1个)
回答1:

void drawimg(HWND hWnd,char *img)
{
HDC shedc;//设备DC
HDC weidc;//位图DC
HDC huandc;//缓冲DC
RECT g_rect;
HBITMAP g_bkbitmap,g_mbbitmap,g_hbitmapL;
GetClientRect(hWnd,&g_rect);
shedc = GetDC(hWnd);//设备DC
huandc = CreateCompatibleDC(shedc);//缓冲DC
weidc = CreateCompatibleDC(shedc); //位图DC
g_bkbitmap = CreateCompatibleBitmap(shedc,g_rect.right,g_rect.bottom);
SelectObject(huandc,g_bkbitmap);
g_mbbitmap = CreateBitmap(300,300,1,1,NULL);
g_hbitmapL = (HBITMAP)LoadImage(NULL,img,IMAGE_BITMAP,
g_rect.right,g_rect.bottom,LR_LOADFROMFILE);
SelectObject(weidc,g_hbitmapL);
BitBlt(huandc,0,0,g_rect.right,g_rect.bottom,weidc,0,0,SRCCOPY);
BitBlt(shedc,0,0,g_rect.right,g_rect.bottom,huandc,0,0,SRCCOPY);
DeleteDC(shedc);
DeleteDC(weidc);
DeleteDC(huandc);
DeleteObject(g_bkbitmap);
DeleteObject(g_mbbitmap);
DeleteObject(g_hbitmapL);
}