游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: 元少

问一吓``怎样将surface里的数据最快的转成hbitmap?

[复制链接]

20

主题

98

帖子

98

积分

注册会员

Rank: 2

积分
98
 楼主| 发表于 2007-5-25 10:52:00 | 显示全部楼层

Re:问一吓``怎样将surface里的数据最快的转成hbitmap?

        HRESULT ddrval = ((LPDIRECTDRAWSURFACE7)pDxAppInfos->m_pPrimarySurface)->Lock( NULL, &ddsd, DDLOCK_WAIT, NULL );
               
                // 位图文件头
                BITMAPFILEHEADER bmfHdr;
                // 位图信息头
                BITMAPINFOHEADER bi;
                DWORD dwBitsSize = 0;
                DWORD dwWriten = 0;

                bi.biBitCount = ddsd.ddpfPixelFormat.dwRGBBitCount;
                bi.biClrImportant = 0;
                bi.biClrUsed = 0;
                bi.biCompression = BI_RGB;
                bi.biHeight = ddsd.dwHeight;
                bi.biWidth = ddsd.dwWidth;
                bi.biPlanes = 1;
                bi.biSize = sizeof(bi);
                bi.biSizeImage = 0;
                bi.biXPelsPerMeter = 0;
                bi.biYPelsPerMeter = 0;

                dwBitsSize = ((ddsd.dwHeight * ddsd.ddpfPixelFormat.dwRGBBitCount + 31) / 32) * 4 * ddsd.dwHeight;
                HANDLE hFile = CreateFile(szPath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
               
                bmfHdr.bfType = 0x4d42;
                bmfHdr.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + dwBitsSize;  
                bmfHdr.bfReserved1 = 0;
                bmfHdr.bfReserved2 = 0;
                bmfHdr.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + (DWORD)sizeof(BITMAPINFOHEADER);
                WriteFile(hFile, (LPSTR)&bmfHdr, sizeof(BITMAPFILEHEADER), &dwWriten, NULL);
                WriteFile(hFile, ddsd.lpSurface, dwBitsSize, &dwWriten, NULL);

                CloseHandle(hFile);
((LPDIRECTDRAWSURFACE7)pDxAppInfos->m_pPrimarySurface)->Unlock(NULL);

上面那段代码保存出来的图片是错误的..用windows自带的图片浏览器看不了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 10:38

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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