GDI 双缓冲绘图也闪屏
我在WM_PAINT里绘图,用了双缓冲,感觉和没用一样!给窗口帖一张图片进去,用鼠标拖动调整窗口大小时,这张图片一样闪的厉害。不知道双缓冲起个什么作用?请GDI高手指点。...
我在WM_PAINT里绘图,用了双缓冲,感觉和没用一样!
给窗口帖一张图片进去,用鼠标拖动调整窗口大小时,这张图片一样闪的厉害。不知道双缓冲起个什么作用?
请GDI高手指点。
case WM_PAINT:
{
HDC hdc = BeginPaint(hwnd,&ps);
FillRect(doubleBuff.back_dc,&doubleBuff.rect,(HBRUSH)GetStockObject(WHITE_BRUSH));
BitBlt(doubleBuff.back_dc,0,0,xPos + IMG_WID, yPos + IMG_HGT,img_dc,0,0,SRCCOPY);
BitBlt(doubleBuff.win_dc,0,0,doubleBuff.rect.right, doubleBuff.rect.bottom,doubleBuff.back_dc,0,0,SRCCOPY);
EndPaint(hwnd,&ps);
return 0;
} 展开
给窗口帖一张图片进去,用鼠标拖动调整窗口大小时,这张图片一样闪的厉害。不知道双缓冲起个什么作用?
请GDI高手指点。
case WM_PAINT:
{
HDC hdc = BeginPaint(hwnd,&ps);
FillRect(doubleBuff.back_dc,&doubleBuff.rect,(HBRUSH)GetStockObject(WHITE_BRUSH));
BitBlt(doubleBuff.back_dc,0,0,xPos + IMG_WID, yPos + IMG_HGT,img_dc,0,0,SRCCOPY);
BitBlt(doubleBuff.win_dc,0,0,doubleBuff.rect.right, doubleBuff.rect.bottom,doubleBuff.back_dc,0,0,SRCCOPY);
EndPaint(hwnd,&ps);
return 0;
} 展开
展开全部
你可以用GetClipBox获得一个RECT,这个RECT是本次刷新的RECT,就可以避免整个图片在每次重绘时都再画到界面上了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
福州大禹电子科技
2024-12-16 广告
2024-12-16 广告
福州大禹电子科技有限公司成立于2008年自创办以来,专注超声产品的研发和产业化,始终坚持技术创新是企业发展动力的理念,运用最基础的物理声学原理,攻克了一系列卡脖子难题,成功打破了国外垄断,把超声技术运用到了工控、水利、市政、环保、医疗,海洋...
点击进入详情页
本回答由福州大禹电子科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询