5547|8

63

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

evc下能将HBITMAP hBitmap 输出为bmp,jpg,png,tiff吗? [复制链接]

evc下能将HBITMAP hBitmap 输出为bmp,jpg,png,tiff吗?

最新回复

解决了  详情 回复 发表于 2008-7-4 08:56
点赞 关注

回复
举报

50

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
可以的,和Win32一样,图像处理没做过?先把HBITMAP转成DIB,
然后把数据转成相应的数据格式就行了。以前我发过有关于HBITMAP和DIB互转的方法
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
使用Imaging api,帮助中查IImagingFactory等等。

如果装了platform builder,搜索imgsimple.cpp文件,是一个完整的例子。
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

4
 
sure. do follow the upstairs.
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

5
 
vc2005下,如何使用?
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

6
 
evc vc2005都是一样的。
都是c++,直接使用。

如果有platform builder
使用代码在如下目录:

%_PUBLICROOT%\GDIEX\SDK\SAMPLES\SIMPLE
%_PUBLICROOT%\GDIEX\SDK\SAMPLES\CODECS

要是没有安装,你只能去网上搜搜有没有例子了。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

7
 
我已经实现这个功能,可以输出这些文件。vc2005下pda上输出 jpg,png,bmp,tif。evc下一样。QQ:37735159
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

8
 
给你个输出BMP的代码吧,至于JPG等其他类型,需要相应的编码器,看机器是否支持了.
void SaveDCToBMP(HDC hDC,int nStartX,int nStartY,int nWidth,int nHeight,LPCTSTR szFileName)
{
        //定义图形色深
        int iPixel = 32;
        //位图信息头
        LPBITMAPINFO lpbmih = new BITMAPINFO;
        lpbmih->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
        lpbmih->bmiHeader.biWidth = nWidth;
        lpbmih->bmiHeader.biHeight = nHeight;
        lpbmih->bmiHeader.biPlanes = 1;
        lpbmih->bmiHeader.biBitCount = iPixel;
        lpbmih->bmiHeader.biCompression = BI_RGB;
        lpbmih->bmiHeader.biSizeImage = 0;
        lpbmih->bmiHeader.biXPelsPerMeter = 0;
        lpbmih->bmiHeader.biYPelsPerMeter = 0;
        lpbmih->bmiHeader.biClrUsed = 0;
        lpbmih->bmiHeader.biClrImportant = 0;
        //创建位图数据
        HDC hdcMem;
        HBITMAP hBitMap = NULL;
        CBitmap *pBitMap = NULL;
        CDC *pMemDC = NULL;
        BYTE *pBits;
        hdcMem = CreateCompatibleDC(hDC);
        hBitMap = CreateDIBSection(hdcMem,lpbmih,DIB_RGB_COLORS,(void **)&pBits,NULL,0);
        pBitMap = new CBitmap;
        pBitMap->Attach(hBitMap);
        pMemDC = new CDC;
        pMemDC->Attach(hdcMem);
        pMemDC->SelectObject(pBitMap);  
        pMemDC->BitBlt(0,0,nWidth,nHeight,CDC::FromHandle(hDC),nStartX,nStartY,SRCCOPY);
        BITMAPFILEHEADER bmfh;
        //位图文件头
        ZeroMemory(&bmfh,sizeof(BITMAPFILEHEADER));
        *((char *)&bmfh.bfType) = 'B';
        *(((char *)&bmfh.bfType) + 1) = 'M';
        bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
        bmfh.bfSize = bmfh.bfOffBits + (nWidth * nHeight) * iPixel / 8;
        int iBMPBytes = nWidth * nHeight * iPixel / 8;
        CFile file;

        if(file.Open(szFileName,CFile::modeCreate|CFile::modeWrite )>0)
        {  
                file.Write(&bmfh,sizeof(BITMAPFILEHEADER));  
                file.Write(&(lpbmih->bmiHeader),sizeof(BITMAPINFOHEADER));  
                file.Write(pBits,iBMPBytes);  file.Close();
        }  
        DeleteObject(hBitMap);
        DeleteObject(hDC);
        pMemDC->DeleteDC();
        delete pMemDC;
        pMemDC = NULL;
        delete pBitMap;
        pBitMap = NULL;
        delete lpbmih;
        lpbmih = NULL;
}
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

9
 
解决了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表