用GDI+做的界面双缓存,问题如下:
双缓存之前绘图的帧率稳定在500上下,而双缓存我是这么做的:
创建窗口等大位图:Bitmap* backbuf = new Bitmap(cxClient, cyClient);
获取位图绘图对象:Graphics* bufGraphics = new Graphics(backbuf);
②对了,每次绘图前都要把位图填充为白**ufGraphics->FillRectangle(&backbrush, 0, 0, cxClient, cyClient);
③绘制完成后将位图绘制到窗口缓冲区:graphics->DrawImage(backbuf, 0, 0);
①而且因为HDC在每次截取WM_PAINT的时候都不一样,所以每次都会实例化graphics = new Graphics(hdc);
很奇怪,这样做了以后帧率突然降到40上下,搞得我不敢往下做了,再做下去帧率降到几,那可真over了
在WM_PAINT消息处理中一共就三步,上面已标记,求做过的兄弟姐妹叔叔阿姨哥哥姐姐帮帮忙,到底是哪一步占用了太多的时间片?
双缓存之前绘图的帧率稳定在500上下,而双缓存我是这么做的:
创建窗口等大位图:Bitmap* backbuf = new Bitmap(cxClient, cyClient);
获取位图绘图对象:Graphics* bufGraphics = new Graphics(backbuf);
②对了,每次绘图前都要把位图填充为白**ufGraphics->FillRectangle(&backbrush, 0, 0, cxClient, cyClient);
③绘制完成后将位图绘制到窗口缓冲区:graphics->DrawImage(backbuf, 0, 0);
①而且因为HDC在每次截取WM_PAINT的时候都不一样,所以每次都会实例化graphics = new Graphics(hdc);
很奇怪,这样做了以后帧率突然降到40上下,搞得我不敢往下做了,再做下去帧率降到几,那可真over了
在WM_PAINT消息处理中一共就三步,上面已标记,求做过的兄弟姐妹叔叔阿姨哥哥姐姐帮帮忙,到底是哪一步占用了太多的时间片?
