发信人: idiots()
整理人: wenbobo(2002-12-27 15:53:04), 站内信件
|
比如说, 要将一个BMP文件读入程序, 并对其做一定的修改.
除了将其转换为点阵格式外, 还有其他方法吗?
据说可以无需格式转换的.
我读不了数据.
-- 由于我很忙,不能经常到社区来。希望复我帖子的朋友随手send一份给我。谢谢。
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.104.37.15] 发信人: abei (阿狈), 信区: CLanguage 标 题: Re: C++如何读取BMP文件 发信站: 网易虚拟社区 (Wed Oct 27 20:09:21 1999), 站内信件
【 在 idiots (无知者) 的大作中提到: 】
: 比如说, 要将一个BMP文件读入程序, 并对其做一定的修改.
: 除了将其转换为点阵格式外, 还有其他方法吗?
: 据说可以无需格式转换的.
:
: .......
我不清楚你的具体需求。假如你仅仅读入BMP文件的数据,而不是去显示
的话,完全可以把它当成一个普通文件对待。这需要对BMP的文件头,
有比较深入的了解。
如果为了显示位图,有许多现成的函数可有。比如LoadImage()网上关
于如何显示一幅位图,有许多现成的例程
-- ("`-''-/").___..--''"`-._
`@_ @ ) `-. ( ).`-.__.`)
(_Y_.)' ._ ) `._ `. ``-..-'
_..`--'_..-_/ /--'_.' ,'
____(il),-'' (li),' ((!.-'
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.181.130] 发信人: idiots (无知者), 信区: CLanguage 标 题: Re: C++如何读取BMP文件 发信站: 网易虚拟社区 (Thu Oct 28 10:03:26 1999), 站内信件
abei (阿狈)
可以给一些“现成的例程”给我吗?谢谢
-- 由于我很忙,不能经常到社区来。希望复我帖子的朋友随手send一份给我。谢谢。
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.116.80.78] 发信人: idiots (无知者), 信区: CLanguage 标 题: Re: C++如何读取BMP文件 发信站: 网易虚拟社区 (Thu Oct 28 10:04:14 1999), 站内信件
【 在 abei (阿狈) 的大作中提到: 】
: 【 在 idiots (无知者) 的大作中提到: 】
: : 比如说, 要将一个BMP文件读入程序, 并对其做一定的修改.
: : 除了将其转换为点阵格式外, 还有其他方法吗?
: : 据说可以无需格式转换的.
: .......
可以给一些“现成的例程”给我吗?谢谢
-- 由于我很忙,不能经常到社区来。希望复我帖子的朋友随手send一份给我。谢谢。
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.116.80.78] 发信人: abei (阿狈), 信区: CLanguage 标 题: Re: C++如何读取BMP文件 发信站: 网易虚拟社区 (Thu Oct 28 12:48:56 1999), 站内信件
【 在 idiots (无知者) 的大作中提到: 】
: 【 在 abei (阿狈) 的大作中提到: 】
: : 【 在 idiots (无知者) 的大作中提到: 】
: : .......
:
: .......
这是网上一位大虾写的代码,我忘记是谁了。应该感激这原作者。我想
转贴出来,不会违背大虾原意
别忘了在你应用的开始调用AfxOleInit();
bool DisplayImage(CDC *pDC,LPCTSTR szFilePath,int x,int y)
{
bool bRet = true;
IPicture *pPic;
IStream *pStm;
CFileStatus fstatus;
CFile file;
LONG cb;
if (file.Open(szFilePath,CFile::modeRead) &&
file.GetStatus(szFilePath,fstatus) &&
((cb = fstatus.m_size) != -1) )
{
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb);
LPVOID pvData = NULL;
if (hGlobal != NULL)
{
if ((pvData = GlobalLock(hGlobal)) != NULL)
{
file.ReadHuge(pvData, cb);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture, (LPVOID* )&pPic)))
{
OLE_XSIZE_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight;
pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
double fX,fY;
fX = (double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double )pDC->GetDeviceCaps(HORZSIZE)*100.0);
fY = (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((doubl e)pDC->GetDeviceCaps(VERTSIZE)*100.0);
if(FAILED(pPic->Render(*pDC,x,y,(DWORD)fX,(DWORD)fY,0,hmHeight,hm Width,-hmHeight,NULL)))
{
AfxMessageBox("Failed To Render The picture!");
bRet = false;
}
pPic->Release();
}
else
{
AfxMessageBox("Error Loading Picture From Stream!");
bRet = false;
}
}
}
}
else
{
AfxMessageBox("Can't Open Image File!");
bRet = false;
}
return bRet;
}
-- ("`-''-/").___..--''"`-._
`@_ @ ) `-. ( ).`-.__.`)
(_Y_.)' ._ ) `._ `. ``-..-'
_..`--'_..-_/ /--'_.' ,'
____(il),-'' (li),' ((!.-'
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.181.185]
|
|