MFC 在对话框显示图片的多种方法-动态载入图片

MFC 在对话框显示图片的多种方法-动态载入图片
函数说明=================================================================函数说明
void LoadImage(DWORD nID,LPCTSTR ImageURL)
参数说明:
nID      需要绘制图像的窗口
ImageURL  图象在硬盘上的地址(动态载入,只支持BMP图象)
void ShowImage(DWORD nID)
参数说明:
nID      需要绘制图像的窗口
实现过程=================================================================实现过程
1.首先在CLoginDlg类中声明一个变量:    CBitmap  m_bmp;
人事管理系统需求分析2.在对话框中加入一个picture 标签,名为IDC_STATIC1,作为绘制图像的窗口.
3.BOOL CLoginDlg::OnInitDialog()
topgamer{
CDialogDlg::OnInitDialog();
LoadImage(IDC_STATIC1,"c:\\\\login.bmp");
return TRUE;
}
4.void CLoginDlg::OnPaint()
{
//CPaintDC dc(this); 一定要去除
/
/ TODO: Add your message handler code here
ShowImage(IDC_STATIC1);
}
函数过程=================================================================函数过程
void CLoginDlg::LoadImage(DWORD nID,LPCTSTR ImageURL)
{
if( m_bmp.m_hObject != NULL )//判断
m_bmp.DeleteObject();
/////////载入图片
HBITMAP hbmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),ImageURL,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_LOADFROMFILE); 奥林匹克
if( hbmp == NULL ) 
return FALSE;
////////该断程序用来取得加载的BMP的信息
m_bmp.Attach( hbmp );
DIBSECTION ds;
BITMAPINFOHEADER &bminfo = ds.dsBmih; 
m_bmp.GetObject( sizeof(ds), &ds );
int cx=bminfo.biWidth;  //得到图像宽度
int cy=bminfo.biHeight; //得到图像高度
梅森素数///////得到了图像的宽度和高度后,我们就可以对图像大小进行适应,即调整控件的大小,让它正好显示一张图片
CRect rect; 管锥篇
GetDlgItem(nID)->GetWindowRect(&rect);
ScreenToClient(&rect);
GetDlgItem(nID)->MoveWindow(rect.p,cx,cy,true);//调整大小
return TRUE;
三基荧光粉
}
void CLoginDlg::ShowImage(DWORD nID)
{
///////绘制图像
//CPaintDC dc(this);      //若用此句,得到的是对话框的DC,图片将被绘制在对话框上.
CPaintDC dc(GetDlgItem(nID)); //用此句,得到picture控件的DC,图像将被绘制在控件上.
//CDC dc;
/
/dc.m_hDC=::GetDC(NULL);  //若用此两句,得到的是屏幕的DC,图片将被绘制在屏幕上.
CRect rcclient;
GetDlgItem(nID)->GetClientRect(&rcclient);
CDC memdc;
memdc.CreateCompatibleDC(&dc); 
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(&dc, rcclient.Width(), rcclient.Height());
memdc.SelectObject( &bitmap );
CWnd::DefWindowProc(WM_PAINT, (WPARAM)memdc.m_hDC , 0);
CDC maskdc;
maskdc.CreateCompatibleDC(&dc);
CBitmap maskbitmap;
maskbitmap.CreateBitmap(rcclient.Width(), rcclient.Height(), 1, 1, NULL);
maskdc.SelectObject( &maskbitmap );
maskdc.BitBlt( 0, 0, rcclient.Width(), rcclient.Height(), &memdc,rcclient.left, p, SRCCOPY);
CBrush brush;
brush.CreatePatternBrush(&m_bmp);
dc.FillRect(rcclient, &brush); 
dc.BitBlt(rcclient.left, p, rcclient.Width(), rcclient.Height(),&memdc, rcclient.p,SRCPAINT);
brush.DeleteObject();
}

本文发布于:2024-09-24 06:23:55,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/582265.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   图片   绘制   得到   加载
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议