如何在VC和Linux下显示BMP,求高手指教!
我现在想在VC和linux下实现BMP的显示,可是我之前没有碰过这个,现在没有思路,求高手指教!谢谢!如果有源代码的话,更是感谢!谢谢
[解决办法]
VC下面直接有api bitblt等,linux下不借助任何东西的话可以直接定义个bitmap头,fopen打开
[解决办法]
方法1:
#include <atlimage.h>
CImage对象
Load方法 载入图片
Draw方法 显示图片
方法2:
用GDI和GDI+
建立CBitmap
然后Load资源文件
例子
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);