vc中显示bmp常用的几个函数介绍

金1色3阳1光4

金1色3阳1光4

2016-02-19 21:06

下面图老师小编要向大家介绍下vc中显示bmp常用的几个函数介绍,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

vc 中动态显示bmp 的方法大致是三种:(我以320×240×1的255色灰度图举例)

1:将bmp导入资源中,这是最方便的,但同时也是最不灵活的,而且也费资源。

使用CBitmap 的LoadBmp(..)

2:可以通过

hBitmap=(HBITMAP) ::LoadImage(NULL,picname,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
具体使用可以参考msdn,我一开始接触时 就是用的这个函数。

之后(CDC *pDc =GetDC();)

HBITMAP OldBitmap;
 
    CDC MemDC;
    CRect rect;
    MemDC.CreateCompatibleDC(pDc);
   
    GetClientRect(rect);
    OldBitmap=(HBITMAP)MemDC.SelectObject(hBitmap);
    pDc-BitBlt(4,4,(rect.Width())-3,(rect.Height())-3,&MemDC,0,0,SRCCOPY);
    MemDC.SelectObject(OldBitmap);
    MemDC.DeleteDC();
    DeleteObject((HGDIOBJ)hBitmap);

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

就可以在自己喜欢的地方显示bmp图了。如果显示的是灰度图,这样可以不考虑彩色表,本身是什么图(灰度的,彩色的,单色的)它就显示什么图。

3:通过数据数组:从采集卡上采集的都是固定格式的数据。所以没有必要将数据做成bmp图,在通过(2)的方法显示出来---我最初就是用这种方法,很笨的哦。

通过函数:StretchDIBits(*pDc,10,10,640,480,0,0,320,240,tmp_buf,bmpInfoHdr,BI_RGB,SRCCOPY);-(640,480,是将原图扩大到这个象素)。其中tmp_buf 为数据数组的地址,bmpInfoHdr为位图信息。

LPBITMAPINFO  bmpInfoHdr= (LPBITMAPINFO)new BYTE[1064];


fread(&bmpFileHdr,sizeof(BITMAPFILEHEADER),1, fp);

fread(&bmpInfoHdr-bmiHeader,40,1, fp);
for(int i=0;i256;i++)
{
    bmpInfoHdr-bmiColors[i].rgbBlue=(BYTE)i;
    bmpInfoHdr-bmiColors[i].rgbGreen=(BYTE)i;
    bmpInfoHdr-bmiColors[i].rgbRed=(BYTE)i;
    bmpInfoHdr-bmiColors[i].rgbReserved=(BYTE)0;
}
由于是灰度图,所以需要自定义彩色表。

*CBitmap 中的 m_bmp.CreateBitmap(320,240,1,255,(BYTE*)tmp_buf);或CreateBitmap(320,240,1,255,(BYTE*)tmp_buf);
都不好用, 原因是 msdn中说的,第三个参数和第四个参数都应为1,才能输出图,并且只能是单色图,还有 m_bmp.CreateBitmapIndirect(&bitmap)。。。CreateCompatibleBitmap等等,这么麻烦,还不一定好用,我还不如不用这个方法了。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

最后别忘了要删除bmp图占的空间。如

MemDC.DeleteDC();   DeleteObject((HGDIOBJ)hBitmap); 小程序可能看不来,但是如果是采集卡上输出的数据,不用几十秒,你的内存就让它给吃完了。

展开更多 50%)
分享

猜你喜欢

vc中显示bmp常用的几个函数介绍

编程语言 网络编程
vc中显示bmp常用的几个函数介绍

VC小技巧:窗体中显示bmp图象

编程语言 网络编程
VC小技巧:窗体中显示bmp图象

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

几个常用的ASP函数

Web开发
几个常用的ASP函数

几个常用的小函数

ASP
几个常用的小函数

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

VC函数中的延时操作

编程语言 网络编程
VC函数中的延时操作

介绍几个array库的新函数

PHP
介绍几个array库的新函数

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

最后你却走的那么潇洒,留我一人在此伤悲

最后你却走的那么潇洒,留我一人在此伤悲

在Visual C++里面检查测试和隔离内存条泄漏

在Visual C++里面检查测试和隔离内存条泄漏
下拉加载更多内容 ↓