利用双缓冲技术将位图像素数据写到DIB位图中并在指定的窗口显示(主要使用CreateDIBSection和BitBlt方法)
2012-12-19 15:12
309 查看
至于为什么要使用双缓冲技术,大家可以查阅相关的资料,这里我只提一点,就是解决屏幕刷新频繁导致闪烁的问题。
下面是相关的代码实现:(这里我保存的DIB位图的大小为320*240,深度为24位)
下面是相关的代码实现:(这里我保存的DIB位图的大小为320*240,深度为24位)
void SaveToBmpAndBlend(BYTE *buffer) { HDC hdc; //获取屏幕显示DC hdc = GetDC(m_hWnd); //创建内存DC HDC hdcMem = CreateCompatibleDC(hdc); //创建一个bmp内存空间 HBITMAP hBmp; BITMAPINFO bmpinfo; bmpinfo.bmiHeader.biSize=sizeof(BITMAPINFOHEADER); bmpinfo.bmiHeader.biWidth=320; bmpinfo.bmiHeader.biHeight=240; bmpinfo.bmiHeader.biPlanes=1; bmpinfo.bmiHeader.biBitCount=24; bmpinfo.bmiHeader.biCompression=BI_RGB; bmpinfo.bmiHeader.biSizeImage=320*240*3; bmpinfo.bmiHeader.biXPelsPerMeter=0; bmpinfo.bmiHeader.biClrImportant=0; bmpinfo.bmiHeader.biClrUsed=0; BYTE* pDibs = NULL; //需要注意,当第5个参数为NULL时,PDibs指向的是一块新申请的内存,需要在外部将缓冲数据复制到这块新内存中。 hBmp=CreateDIBSection(hdcMem,&bmpinfo,DIB_RGB_COLORS,(void**) &pDibs,NULL,0); for (int i=0;i<320*240*3;i++) { pDibs[i]=buffer[i]; } //将bmp内存空间分配给内存DC HGDIOBJ hOldSel = SelectObject(hdcMem,hBmp); //将内存DC的内容复制到屏幕显示DC中,完成显示 BitBlt(hdc,0,0,320,240,hdcMem,0,0,SRCCOPY);//SRCCOPY 完全覆盖 //清除资源 SelectObject(hdcMem,hOldSel); DeleteDC(hdcMem); ReleaseDC(m_hWnd, hdc); }
相关文章推荐
- 利用双缓冲技术将位图像素数据写到DIB位图中并在指定的窗口显示(主要使用CreateDIBSection和BitBlt方法)
- 使用WindowManager.addView()方法增加的悬浮窗口,如何固定屏幕显示方向?
- 使用反射技术获取指定类型中方法的完整信息
- 使用MoveWindow()函数来移动指定句柄的窗口在屏幕中的显示位置及这个窗口的大小
- android使用LayoutInflater显示进度窗口的方法
- C#/winform 指定窗口显示位置的方法
- 利用StretchDIBits、CreateDIBSection、CreateDIBitmap三种方法显示内存位图
- Html表单提交到Servlet输出到页面乱码 Html使用的编码是UTF-8编码显示页面,之后使用form表单提交字段到Servlet中,Servlet将利用getParamer方法获得fo
- 用Delphi画圆角Panel的方法(使用CreateRoundRectRgn创造区域,SetWindowRgn显示指定区域)
- 利用双缓冲技术来显示动画
- emWin 2天速成实例教程014_BMP位图图片显示以及位图皮肤的使用方法
- 弹出层blockui插件主要使用blockUI和unblockUI两个方法来控制弹出层的显示或者隐藏
- VS2010使用C++/CLI编程窗口无法显示问题解决方法
- C#指定窗口显示位置的方法
- 使用Visual Studio IDE编写程序时不显示窗口或窗口一闪而逝的解决方法
- 【DirectX学习】使用DirectDraw在windows窗口上显示位图
- 利用NVelocity模板替换技术显示页面,模板里怎么调用C#类库的静态方法
- 数据库中各种操作方式累积。这个主要是测试显示使用多种方法
- 不要使用Drawable的setBounds方法来指定其在控件作为背景的显示位置
- jquery利用正则表达式验证密码,手机号(主要是使用方法,正则表达式网上一搜一堆)