资源描述:
《vcpicture控件动态载入图片方法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Vc的picture控件动态载入图片方法(注意:以基于对话框的程序描述的)Chensq1.首先在CTestDlg类中声明一个变量: CBitmap m_bmp;2.然后我们在对话框中加入一个picture标签,名为IDC_STATIC13.编写函数LoadBmpFile()boolCMyDlg::LoadBmpFile(){if(m_bmp.m_hObject!=NULL)//判断m_bmp.DeleteObject();//载入图片HBITMAPhbmp=(HBITMAP)::LoadImage(
2、AfxGetInstanceHandle(),"tmp.bmp",IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION
3、LR_LOADFROMFILE);if(hbmp==NULL)returnFALSE;//该段程序用来取得加载的BMP的信息m_bmp.Attach(hbmp);DIBSECTIONds;BITMAPINFOHEADER&bminfo=ds.dsBmih;m_bmp.GetObject(sizeof(ds),&ds);intcx=bminfo.biWidth;//得到
4、图像宽度intcy=bminfo.biHeight;//得到图像高度//得到了图像的宽度和高度后,我们就可以对图像大小进行适应,//即调整控件的大小,让它正好显示一张图片.CRectrect;GetDlgItem(IDC_STATIC1)->GetWindowRect(&rect);ScreenToClient(&rect);GetDlgItem(IDC_STATIC1)->MoveWindow(rect.left,rect.top,cx,cy,true);//调整大小returnTRUE;}2.重写On
5、Paint()函数voidCMyDlg::OnPaint(){/*if(IsIconic()){CPaintDCdc(this);//devicecontextforpaintingSendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);//CentericoninclientrectangleintcxIcon=GetSystemMetrics(SM_CXICON);intcyIcon=GetSystemMetrics(SM_CYICON);CR
6、ectrect;GetClientRect(&rect);intx=(rect.Width()-cxIcon+1)/2;inty=(rect.Height()-cyIcon+1)/2;//Drawtheicondc.DrawIcon(x,y,m_hIcon);}else{CDialog::OnPaint();}*///重写了OnPaint()函数/////////////////////////////////////////////////////////////////////////////////
7、///以下三种情况任选一种会是不同效果(只能一种存在)////1.//CPaintDCdc(this);//若用此句,得到的是对话框的DC,图片将被绘制在对话框上.//2.CPaintDCdc(GetDlgItem(IDC_STATIC1));//用此句,得到picture控件的DC,图像将被绘制在控件上//3.//CDCdc;//dc.m_hDC=::GetDC(NULL);//若用此两句,得到的是屏幕的DC,图片将被绘制在屏幕上.////////////////////////////////////
8、/////////////////////////////////////////////CRectrcclient;GetDlgItem(IDC_STATIC1)->GetClientRect(&rcclient);CDCmemdc;memdc.CreateCompatibleDC(&dc);CBitmapbitmap;bitmap.CreateCompatibleBitmap(&dc,rcclient.Width(),rcclient.Height());memdc.SelectObject(&bit
9、map);CWnd::DefWindowProc(WM_PAINT,(WPARAM)memdc.m_hDC,0);CDCmaskdc;maskdc.CreateCompatibleDC(&dc);CBitmapmaskbitmap;maskbitmap.CreateBitmap(rcclient.Width(),rcclient.Height(),1,1,NULL);maskdc.SelectObject(&maskbitma