我创建了一个BITMAPINFO结构体,像素点的数据存在一个数组里。
然后使用CreateDIBSection创建位图,怎么就不能显示呢?运行时,窗口变的没有背景了,也不能显示图像。
CRect rect;
GetClientRect(&rect);
//
CDC memDC;//用于缓存作图的内存DC
HBITMAP hBitmap = NULL;//内存中承载临时对象的位图
memDC.CreateCompatibleDC(NULL);//依附窗口DC,创建内存兼容DC
hBitmap = CreateCompatibleBitmap(memDC,rect.Width(),rect.Height());
//在内存DC中绘图
LPBYTE p = pDoc->GetPixels();//数据集指针
memDC.FillSolidRect(0,0,rect.right,rect.bottom,RGB(255,255,255));//填充窗口hBitmap = CreateDIBSection(memDC,bitmapInfo,DIB_RGB_COLORS,(void**)&p,NULL,0);//创建位图memDC.SelectObject(&hBitmap);//将位图选择进内存DCpDC->BitBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,SRCCOPY);//显示内存DC中的图像if(hBitmap)DeleteObject(hBitmap);//删除位图
memDC.DeleteDC();//删除内存DC
然后使用CreateDIBSection创建位图,怎么就不能显示呢?运行时,窗口变的没有背景了,也不能显示图像。
CRect rect;
GetClientRect(&rect);
//
CDC memDC;//用于缓存作图的内存DC
HBITMAP hBitmap = NULL;//内存中承载临时对象的位图
memDC.CreateCompatibleDC(NULL);//依附窗口DC,创建内存兼容DC
hBitmap = CreateCompatibleBitmap(memDC,rect.Width(),rect.Height());
//在内存DC中绘图
LPBYTE p = pDoc->GetPixels();//数据集指针
memDC.FillSolidRect(0,0,rect.right,rect.bottom,RGB(255,255,255));//填充窗口hBitmap = CreateDIBSection(memDC,bitmapInfo,DIB_RGB_COLORS,(void**)&p,NULL,0);//创建位图memDC.SelectObject(&hBitmap);//将位图选择进内存DCpDC->BitBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,SRCCOPY);//显示内存DC中的图像if(hBitmap)DeleteObject(hBitmap);//删除位图
memDC.DeleteDC();//删除内存DC
解决方案 »
- 使用MFC文档类DLL时的一些小问题
- 数据库大小问题
- 灵异事件,微软语音识别版本有6.1么?
- 修改对话框的类名,怎么样通过PreCreateWindow(CREATESTRUCT& cs) 函数修改呀!~~在线等 SOS
- 高分求教!!!在windows下开发对时间精度有一定要求的问题,欢迎大家讨论!
- 向各位前辈请教一个有关多个数据表连接的问题
- 我试着做了一个active的按纽控件,我如何在vc创建的容器中同时调用多个同样的按纽控件呢????
- 请问,如何取得某一文件在系统中注册的类型?
- 请问MSN或QQ等视频聊天是什么开发包或API来实现?
- 大学生做兼职,能做些什么?大家说说自己的经历吧!
- 欢迎加入编程群48442682,顺便散分
- Vc++ ado + sql server操作Microsoft world 文件
这个函数返回的句柄无效,GetLastError的结果是8,表示“存储空间不足,无法处理此命令”。
memDC.CreateCompatibleDC(NULL);//依附窗口DC,创建内存兼容DC
不知道有问题没有,其它就不知道了。