首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎么在VC和Linux上显示BMP,

2012-10-19 
如何在VC和Linux下显示BMP,求高手指教!我现在想在VC和linux下实现BMP的显示,可是我之前没有碰过这个,现在

如何在VC和Linux下显示BMP,求高手指教!
我现在想在VC和linux下实现BMP的显示,可是我之前没有碰过这个,现在没有思路,求高手指教!谢谢!如果有源代码的话,更是感谢!谢谢

[解决办法]
VC下面直接有api bitblt等,linux下不借助任何东西的话可以直接定义个bitmap头,fopen打开
[解决办法]
方法1:
#include <atlimage.h>
CImage对象
Load方法 载入图片 
Draw方法 显示图片


方法2:
用GDI和GDI+
建立CBitmap
然后Load资源文件

例子

C/C++ code
        CBitmap cbmp,cbmp_name;        BITMAP bmp,bmp_name;        CRect rect;        BOOL bFinish;        cbmp.LoadBitmap(IDB_BITMAP1);        cbmp_name.LoadBitmap(IDB_BITMAP2);        this->GetClientRect(&rect);        cbmp.GetBitmap(&bmp);        cbmp_name.GetBitmap(&bmp_name);                CDC* cdc = GetDC();     //前台DC        CDC bufferDC;           //后台DC        CDC tempDC;    //装载地球DC        CDC tempNameDC; //装载标题DC        CBitmap bufferBMP;  //后台DC位图                //DC关联        bFinish = bufferDC.CreateCompatibleDC(cdc);        bFinish = tempDC.CreateCompatibleDC(cdc);        bFinish = tempNameDC.CreateCompatibleDC(cdc);                //后台DC位图关联                bFinish =bufferBMP.CreateCompatibleBitmap(cdc,rect.Width(),rect.Height());                bufferDC.SelectObject(bufferBMP);        tempDC.SelectObject(cbmp);        tempNameDC.SelectObject(cbmp_name);        int ibufferDCy = rect.Height()/2 - bmp_name.bmHeight/2 - 20;        bFinish = bufferDC.StretchBlt(0,0,rect.Width(),rect.Height(),&tempDC,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);        bFinish = bufferDC.TransparentBlt(0,ibufferDCy,bmp_name.bmWidth,bmp_name.bmHeight,&tempNameDC,0,0,bmp_name.bmWidth,bmp_name.bmHeight,RGB(255,255,255));        //绘制到前台DC        //bFinish = cdc->BitBlt(0,0,rect.Width(),rect.Height(),&bufferDC,0,0,SRCCOPY);        bFinish = cdc->TransparentBlt(0,0,rect.Width(),rect.Height(),&bufferDC,0,0,rect.Width(),rect.Height(),RGB(255,255,255));        //释放资源        bufferBMP.DeleteObject();        tempDC.DeleteDC();        bufferDC.DeleteDC();        this->ReleaseDC(cdc); 

热点排行