游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1466|回复: 1

BitBlt能不能三缓冲

[复制链接]

3

主题

4

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2006-5-19 09:07:00 | 显示全部楼层 |阅读模式
最近用了双缓冲BITBLT绘图,感觉图象还是有点闪(我窗口的背景已经设置为NULL)
hdcMem = CreateCompatibleDC (hdc) ;
SelectObject (hdcMem, hSence) ;               
BitBlt (hdc, 0,0, 640, 480, hdcMem, 0, 0, SRCCOPY) ;
SelectObject (hdcMem, hSlash) ;               
BitBlt (hdc, 0,0, 100, 20, hdcMem, 0, 0, SRCCOPY) ;
DeleteDC( hdcMem );       
EndPaint(hWnd, &ps);  
所以我尝试把全部的图先绘制到一个HDCMEM里,再把HDCMEM绘制到屏幕上,可是这样根本就贴不出图来,请问这是为什么,还有如何解决双缓冲时图象闪烁的问题,谢谢
PAINTSTRUCT ps;
hdc = BeginPaint(hWnd, &ps);
hdcMem = CreateCompatibleDC (hdc) ;
hdcTemp = CreateCompatibleDC (hdcMem) ;
SelectObject (hdcTemp, hSence) ;               
BitBlt (hdcMem, 0,0, 640, 480, hdcTemp, 0, 0, SRCCOPY) ;
SelectObject (hdcTemp, hSlash) ;
BitBlt (hdcMem, 0,0, 155, 46, hdcTemp, 0, 0, SRCCOPY) ;
BitBlt (hdc, 0,0, 640, 480, hdcMem, 0, 0, SRCCOPY) ;
DeleteDC( hdcTemp);       
DeleteDC( hdcMem );       
EndPaint(hWnd, &ps);

8

主题

310

帖子

311

积分

中级会员

Rank: 3Rank: 3

积分
311
QQ
发表于 2006-5-19 18:35:00 | 显示全部楼层

Re:BitBlt能不能三缓冲

先建一个绘图页
HBITMAP bm;
bm = CreateCompatibleBitmap(hdc,640,480);
再SelectObject(hdcMem,bm);
然后就可以画在绘图页上了
SelectObject (hdcTemp, hSence) ;
BitBlt (hdcMem, 0,0, 640, 480, hdcTemp, 0, 0, SRCCOPY) ;
SelectObject (hdcTemp, hSlash) ;
BitBlt (hdcMem, 0,0, 155, 46, hdcTemp, 0, 0, SRCCOPY) ;
BitBlt (hdc, 0,0, 640, 480, hdcMem, 0, 0, SRCCOPY) ;
OK
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 12:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表