📄 subject_41812.htm
字号:
<p>
序号:41812 发表者:立山而飞 发表日期:2003-05-29 16:46:16
<br>主题:请教如何利用vc编一个能读取显示图像(bmp、jpeg等只要有一种类型就可以)?
<br>内容:主要是刚刚学习vc,不知道从什么地方下手?请一步步教我?谢谢<BR>只要 文件/打开/ 弹出对话框 选择类型 bmp等,然后能够显示就可以了。<BR>就像利用windows自带的画图软件一样,能够打开bmp格式就够了。不胜感激!!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:luowen 回复日期:2003-05-29 21:40:50
<br>内容:用BITBLT可以显示BMP;<BR>如果要显示JPG,GIF等可以用GDI+类
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:金枪鱼 回复日期:2003-05-29 23:16:24
<br>内容:现存的CPictureEx类,还用自己编。在vchelp中去找吧,同时支持bmp/jpg/gif/cur/ico/动画gif。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:eric 回复日期:2003-05-30 10:35:28
<br>内容:<BR> CDC memDC;<BR> memDC.CreateCompatibleDC(pDC);<BR> HBITMAP hBitmap,hOldBitmap;<BR> CBitmap bitmap;<BR> BITMAP structBitmap;<BR> CSize size;<BR><BR> hBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),m_strBmpName,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_LOADFROMFILE);<BR> hOldBitmap=(HBITMAP)memDC.SelectObject(hBitmap);<BR> bitmap.Attach(hBitmap);<BR> bitmap.GetBitmap(&structBitmap);<BR> size.cx=structBitmap.bmWidth+40;<BR> size.cy=structBitmap.bmHeight+40;<BR> pDC->BitBlt(20,20,structBitmap.bmWidth,structBitmap.bmHeight,&memDC,0,0,SRCCOPY);<BR><BR> bitmap.Detach();<BR> memDC.SelectObject(hOldBitmap);<BR> SetScrollSizes(MM_TEXT,size);<BR><BR><BR>如何?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:立山而飞 回复日期:2003-06-05 17:14:26
<br>内容:请问3楼的,代码在哪里加?能不能具体点。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:大笨钟 回复日期:2003-06-06 15:17:05
<br>内容:void CTestDlg::OnButton3() <BR>{<BR> // TODO: Add your control notification handler code here<BR> CString strPath;<BR> CFileDialog dlg(TRUE,"jpg","*.jpg", <BR> OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, <BR> "JPEG文件(*.jpg)|*.jpg|GIF文件(*.gif)|*.gif||",NULL); <BR> if(dlg.DoModal()==IDOK) <BR> { <BR> strPath=dlg.GetPathName(); <BR> // Invalidate(); <BR> } <BR>// CPaintDC dc(this);<BR> CDC* pDC=this->GetDC();<BR><BR> IStream *pStm; <BR> CFileStatus fstatus; <BR> CFile file; <BR> LONG cb; <BR> <BR> HGLOBAL hGlobal;<BR> if (file.Open(strPath,CFile::modeRead)&&file.GetStatus(strPath,fstatus)&& ((cb = fstatus.m_size) != -1)) <BR> { <BR> hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb); <BR> LPVOID pvData = NULL; <BR> if (hGlobal != NULL) <BR> { <BR> if ((pvData = GlobalLock(hGlobal)) != NULL) <BR> { <BR> file.ReadHuge(pvData, cb); <BR> GlobalUnlock(hGlobal); <BR> CreateStreamOnHGlobal(hGlobal, TRUE, &pStm); <BR> }<BR> }<BR> file.Close();<BR> }<BR> <BR> <BR> <BR> IPicture *pPic; <BR> if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic))) <BR> { <BR> OLE_XSIZE_HIMETRIC hmWidth; <BR> OLE_YSIZE_HIMETRIC hmHeight; <BR> pPic->get_Width(&hmWidth); <BR> pPic->get_Height(&hmHeight); <BR> double fX,fY; <BR> <BR> fX = (double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double)pDC->GetDeviceCaps(HORZSIZE)*100.0); <BR> fY = (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)pDC->GetDeviceCaps(VERTSIZE)*100.0); <BR> if(FAILED(pPic->Render(*pDC,0,0,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL))) <BR> AfxMessageBox("渲染图像失败!"); <BR> pPic->Release(); <BR> } <BR> else <BR> AfxMessageBox("从流中装载图像失败!"); <BR> <BR> GlobalFree(hGlobal);<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:立山而飞 回复日期:2003-07-14 11:23:50
<br>内容:楼上的,按这样子是可以显示图像了,可是,最大化的时候,结果就一片空白了,图像不见了。而且,我想要做其他图像处理,比如灰度化等等,这样子好像没有文件头、颜色等,无法实现啊
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:佳明 回复日期:2003-07-16 13:43:36
<br>内容:显示jpg 可以用 ATL中的CImage类<BR><BR>先#include "atlimage.h"<BR><BR>再CImage MyImage;<BR><BR>MyImage.Load("jpg1.jpg"); //把图片载进来<BR>MyImage.Draw(hDestDc,xDest,yDest);//把图片显示出来<BR>用完后 MyImage.Destroy (); //释放<BR><BR>CImage有很多成员函数,Draw 几种形式,上面是最简单的一种<BR><BR>Load一张新图片前先 Destroy() 掉之前的图片
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -