MFC--picture control的用法
目录
参考文章:MFC图像处理CImage类常用代码
一、通过资源ID的方式加载图片
图片资源文件为BMP,通过BMP资源ID获取bitmap
void CCTDlg::draw()
{
CBitmap bitmap;
bitmap.LoadBitmapW(IDB_BITMAP1);
CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_PHOTO);
pStatic->ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE);
pStatic->SetBitmap((HBITMAP)bitmap);
}
二、通过文件路径的方式加载图片
bmp文件
通过bmp文件路径加载图片,loadImage()函数可改变图片大小。
void CCTDlg::draw()
{
HBITMAP bitmap = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),
TEXT(".\\res\\1.bmp"),
IMAGE_BITMAP,
600,
200,
LR_DEFAULTCOLOR | LR_LOADFROMFILE | LR_CREATEDIBSECTION);
CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_PHOTO);
pStatic->ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE);
pStatic->SetBitmap((HBITMAP)bitmap);
}
其他格式文件
其他格式的文件要先转换成bmp,也可用于bmp文件
void CCTDlg::draw()
{
CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_PHOTO); // 得到 Picture Control 句柄
CImage image;
image.Load(TEXT(".\\res\\yyl.png"));
HBITMAP bitmap = image.Detach();
pStatic->ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE);
pStatic->SetBitmap(bitmap);
image.Destory();
}
三、调整大小显示图片
根据MFC控件大小CImage类实例图片显示
void CCTDlg::draw()
{
CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_PHOTO);//得到控件
CImage image;
image.Load(TEXT(".\\res\\1.bmp")); //加载图片
CRect zcRect;
pStatic->GetClientRect(&zcRect); //得到尺寸
image.Draw(pStatic->GetDC()->m_hDC,
zcRect.left,
zcRect.top,
zcRect.Width(),
zcRect.Height());
image.Destroy();
}
根据CImage类实例的大小调整MFC控件
void CCTDlg::draw()
{
CImage image;
image.Load(TEXT(".\\res\\2.jpg")); //加载图片
// 将整控件调整为与图像同一尺寸
CStatic* pStatic = (CStatic *)GetDlgItem(IDC_STATIC_PHOTO);
pStatic->SetWindowPos(NULL,
0,
0,
image.GetWidth(),
image.GetHeight(),
SWP_NOMOVE);
pStatic->ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE);
pStatic->SetBitmap((HBITMAP)image.Detach());
}
四、清空图片
void CCTDlg::clear()
{
CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_PHOTO); // 得到 Picture Control 句柄
pStatic->SetBitmap(NULL);
this->RedrawWindow();
}
五、释放空间
image.Destroy(); //释放CImage对象
pStatic->ReleaseDC(Dc); //释放CDC、