资源描述:
《使用picture控件动态显示图片方法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、使用picture控件动态显示图片方法一控件适应于图片尺寸添加一个picture控件,修改ID为IDC-PICTURE,并添加一CBitmapm_bmp成员变量在OnInitDialog()函数中添加如下代码if(m_bmp.m_hObject!=NULL)m_bmp.DeleteObject();//以绝对路径加载BMP图片HBITMAPhbmp=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),"1.bmp",IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION
2、LR_LO
3、ADFROMFILE);if(hbmp==NULL)returnfalse;//获得加载位图的文件信息m_bmp.Attach(hbmp);DIBSECTIONds;BITMAPINFOHEADER&bminfo=ds.dsBmih;//获得位图信息图m_bmp.GetObject(sizeof(ds),&ds);intcx=bminfo.biWidth;//获得位图宽度intcy=bminfo.biHeight;//获得位图高度//该段程序根据图象的宽和高,调整控件大小,让它正好显示一张图片CRectrect;GetDlgItem(
4、IDC_PICTRUE)->GetWindowRect(&rect);//获得控件所在矩形区域ScreenToClient(&rect);GetDlgItem(IDC_PICTRUE)->MoveWindow(rect.left,rect.top,cx,cy,true);//调整控件大小在OnPaint()函数中添加如下代码//三种方法获得pictrue控件DC,图象将被绘制在控件上CPaintDCdc(GetDlgItem(IDC_PICTRUE));//CPaintDCdc(this);//CDCdc;//dc.m_hDC=::G
5、etDC(NULL);CRectrcclient;GetDlgItem(IDC_PICTRUE)->GetClientRect(&rcclient);CDCmemdc;memdc.CreateCompatibleDC(&dc);CBitmapbitmap;bitmap.CreateCompatibleBitmap(&dc,rcclient.Width(),rcclient.Height());memdc.SelectObject(&bitmap);CWnd::DefWindowProc(WM_PAINT,(WPARAM)memdc.m
6、_hDC,0);CDCmaskdc;maskdc.CreateCompatibleDC(&dc);CBitmapmaskbitmap;maskbitmap.CreateBitmap(rcclient.Width(),rcclient.Height(),1,1,NULL);maskdc.SelectObject(&maskbitmap);maskdc.BitBlt(0,0,rcclient.Width(),rcclient.Height(),&memdc,rcclient.left,rcclient.top,SRCCOPY);CBrus
7、hbrush;brush.CreatePatternBrush(&m_bmp);dc.FillRect(rcclient,&brush);dc.BitBlt(rcclient.left,rcclient.top,rcclient.Width(),rcclient.Height(),&memdc,rcclient.left,rcclient.top,SRCPAINT);brush.DeleteObject();二图片适用于控件尺寸添加一个picture控件,修改ID为IDC-PICTURE在OnPaint()函数中添加如下代码CWnd*
8、pWnd=GetDlgItem(IDC_PICTRUE);//获得pictrue控件窗口的句柄CRectrect;pWnd->GetClientRect(&rect);//获得pictrue控件所在的举行区域CDC*pDC=pWnd->GetDC();//获得pictrue控件的DCIStream*pStm;CFileStatusfstatus;CFilefile;LONGcb;IPicture*pPic;//定义显示图片的接口(可显示jpg格式图片)CStringm_sPath="1.BMP";//设置想要显示的图片//打开图象文件
9、,获取文件字节数if(file.Open(m_sPath,CFile::modeRead)&&file.GetStatus(m_sPath,fstatus)&&((cb=fstatus.m_size)!=-1)){//分