抓取 Direct3D 图像到 GDI 位图

简介: 比较简单, 下面直接贴代码了:   // IDirect3DDevice8* pDevice; // RECT rcScreen; // = {0, 0, 1024, 768}; // HDC hdc; // HBITMAP hbitmap; // 忽略返回值检查,应该按需要...

比较简单, 下面直接贴代码了:

 

// IDirect3DDevice8* pDevice;
// RECT rcScreen; // = {0, 0, 1024, 768}; 
// HDC hdc;
// HBITMAP hbitmap;
// 忽略返回值检查,应该按需要加入错误处理

IDirect3DSurface8* pfb;
pDevice->CreateImageSurface(rcScreen.right, rcScreen.bottom, D3DFMT_A8R8G8B8, &pfb);
pDevice->GetFrontBuffer(pfb);

D3DLOCKED_RECT lr;
pfb->LockRect(&lr, NULL, D3DLOCK_READONLY);

BITMAPINFOHEADER bih;
memset(&bih, 0, sizeof(BITMAPINFOHEADER));
bih.biSize = sizeof(BITMAPINFOHEADER);
bih.biWidth = rcScreen.right;
bih.biHeight = rcScreen.bottom;
bih.biPlanes = 1;
bih.biBitCount = 32;
bih.biCompression = BI_RGB;

SetDIBits(hdc, hbitmap, 0, rcScreen.bottom, lr.pBits, &bih, DIB_RGB_COLORS);

pfb->UnlockRect();
pfb->Release();

 

目录
相关文章
|
3月前
|
存储 传感器 监控
工业相机如何实现实时和本地Raw格式图像和Bitmap格式图像的保存和相互转换(C#代码,UI界面版)
工业相机如何实现实时和本地Raw格式图像和Bitmap格式图像的保存和相互转换(C#代码,UI界面版)
31 0
|
4月前
|
XML 算法 Java
Android App开发之位图加工Bitmap中转换位图的像素色彩、裁剪内部区域、利用矩阵变换位图的讲解及实战(附源码和演示)
Android App开发之位图加工Bitmap中转换位图的像素色彩、裁剪内部区域、利用矩阵变换位图的讲解及实战(附源码和演示)
29 0
|
C++
CxImage内存方式转换图像
最近,处于项目需要,需要将Bmp转换为JPEG格式。以前做过,采用的是GDI+的方式,该方式有一个极大地缺陷为无法实现跨平台处理。闲话少说,进入正题。 [cpp] view plain copy   CxImage cxImageBmp(pRGBBuffer, dwRGBSize, CXIMAGE_FORMAT_BMP);      cxImageBmp.Save("D:\\ttt.jpg",CXIMAGE_FORMAT_JPG);   该方式很正常,顺利将RGB格式24位BMP图像转化为本地JPG文件并保存下来。
1159 0
像素缓冲区对象(PBO) 的Streaming-Texture上传 源码解析
像素缓冲区对象(PBO) 的Streaming-Texture上传 源码解析
180 0
像素缓冲区对象(PBO) 的Streaming-Texture上传 源码解析
Halcon把8位图转换为24位图的方法
Halcon把8位图转换为24位图的方法
393 0
|
算法 API C++
在VC++中使用CxImage库读写图像实现像素操作
最近做了一个项目最后要把算法整成C++的DLL方式给别人调用,朋友给我推荐了用CxImage这个库来读写图像文件,所以我就用了,基于CxImage做了调用算法的Demo程序,已经给别人测试了,现在总结一下CxImage使用中遇到的那些坑。
1540 0