菜鸟求救,关于BMP图像的显示问题? 小弟我是刚学MFC编程,自己看资料编了个读取并显示BMP文件的程序,能通过编译,但是显示不出图像。是不是要先把图像保存在什么指定的位置的啊?CfileDialog 中的GetPathName()返回的路径是什么?请各位大侠指教!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1:那99%是你写的代码有问题,所以图象显示不出来.2:GetPathName()返回的是绝对路径,可以用来操作该文件,例如CFileDialog dlg( TRUE );CFile file;if( dlg.DoModal() == IDOK ){ if( !file.Open( dlg.GetPathName(), CFile::modeRead ) ) return;} void CFillDrugTouch::ShowDrugImage(CString ImageUrl){ //加载图片 CStatic *pWnd = (CStatic *)GetDlgItem(IDC_PIC); pWnd->ModifyStyle(0,SS_BITMAP); pWnd->SetBitmap((HBITMAP)::LoadImage(AfxGetInstanceHandle(), ImageUrl, //换成用户指定文件名,不过只能显示.bmp文件 IMAGE_BITMAP, 450,320,LR_CREATEDIBSECTION |LR_DEFAULTSIZE |LR_LOADFROMFILE));} 我显示图像的函数是:前面在文档类中定义了: BITMAPFILEHEADER bf; BITMAPINFOHEADER bi; RGBQUAD* quad; BYTE* lpBuf; BITMAPINFO* pbi; int flag; int numQuad; 在视图类中的图像显示函数如下: void CMy1View::OnPaint(){ CPaintDC dc(this); CMy1Doc*pDoc=GetDocument(); ASSERT_VALID(pDoc); if(pDoc->flag==1) { SetDIBitsToDevice(dc.m_hDC,0,0,pDoc->bi.biWidth,pDoc->bi.biHeight,0,0,0,pDoc->bi.biHeight,pDoc->lpBuf,pDoc->pbi,DIB_RGB_COLORS); } Invalidate(FALSE);}不知道哪个地方出问题了?? SetDIBitsToDevice(dc.m_hDC,0,0,pDoc->bi.biWidth,pDoc->bi.biHeight,0,0,0,pDoc->bi.biHeight,pDoc->lpBuf,pDoc->pbi,DIB_RGB_COLORS); 确认你这个函数里面用到数据的都是正确的..并且,Invalidate(FALSE);//这句不应出现在onpaint()里的.. 显示图像的过程并不复杂,去www.vckbase.com上下点初学者需要用到的代码吧,还是很容易理解的 winpcap很难抓到本机的包 关于winsock MessageBox出了点怪事情。 disconnectex返回错误52的问题 求教:ClistView的使用方法~~~~~~~ 关于MainFrame指针传递的问题。高分求教! 在vc中写个win32程序怎么做? 用FLW做屏幕录像,如何在录像过程每隔一段时间存盘? 我在一个工程里搞好了一个菜单,现在在另外一个工程里也要一个完全一样的(连ID定义都要一样).有什么快点的方法么? 哪位大侠能讲讲网上对时的原理 终于碰到传闻中的VC最强BUG了 如何得知访问磁盘的进程信息?
2:GetPathName()返回的是绝对路径,可以用来操作该文件,例如
CFileDialog dlg( TRUE );
CFile file;
if( dlg.DoModal() == IDOK ){
if( !file.Open( dlg.GetPathName(), CFile::modeRead ) )
return;
}
{
//加载图片
CStatic *pWnd = (CStatic *)GetDlgItem(IDC_PIC);
pWnd->ModifyStyle(0,SS_BITMAP);
pWnd->SetBitmap((HBITMAP)::LoadImage(AfxGetInstanceHandle(),
ImageUrl, //换成用户指定文件名,不过只能显示.bmp文件
IMAGE_BITMAP,
450,320,LR_CREATEDIBSECTION |LR_DEFAULTSIZE |LR_LOADFROMFILE));
}
前面在文档类中定义了:
BITMAPFILEHEADER bf;
BITMAPINFOHEADER bi;
RGBQUAD* quad;
BYTE* lpBuf;
BITMAPINFO* pbi;
int flag;
int numQuad;
在视图类中的图像显示函数如下:
void CMy1View::OnPaint()
{
CPaintDC dc(this);
CMy1Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
if(pDoc->flag==1)
{
SetDIBitsToDevice(dc.m_hDC,0,0,pDoc->bi.biWidth,pDoc->bi.biHeight,0,0,0,pDoc->bi.biHeight,pDoc->lpBuf,pDoc->pbi,DIB_RGB_COLORS);
}
Invalidate(FALSE);
}
不知道哪个地方出问题了??