VS2010用MFC文件对话框实现如下功能,点击“打开”按钮,选一张图片显示到图片控件中,程序该怎么写?
voidCshiDlg::OnBnClickedOpenButton1()//按钮程序{TCHARszFilter[]=_T("所有文件(*.*)|*.*||");//构...
void CshiDlg::OnBnClickedOpenButton1() //按钮程序{ TCHAR szFilter[] = _T("所有文件(*.*)|*.*||"); // 构造打开文件对话框 CFileDialog fileDlg(TRUE, _T("bmp"), NULL, 0, szFilter, this); CString strFilePath; // 显示打开文件对话框 if (IDOK == fileDlg.DoModal()) { 这里面应该是显示一张图片到picture control控件上的程序,该怎么写呢? }
展开
1个回答
追问
是的是的
追答
picture控件ID为: IDC_STATIC_PNG
在button响应函数中:
CFileDialog fileDlg(TRUE, _T("png"), NULL, 0, _T("png Files(*.png)|*.png||"), this);
fileDlg.DoModal();
CString strFilePath;
strFilePath = fileDlg.GetPathName();
if (strFilePath == _T(""))
{
return;
}
CRect rc;
GetDlgItem(IDC_STATIC_PNG)->GetClientRect(rc);
CImage image;
image.Load(strFilePath); //图片文件路径
if (image.GetBPP() == 32)
{
int i; int j;
for (i = 0; i < image.GetWidth(); i++)
{
for (j = 0; j < image.GetHeight(); j++)
{
byte *pByte = (byte *)image.GetPixelAddress(i, j);
pByte[0] = pByte[0] * pByte[3] / 255;
pByte[1] = pByte[1] * pByte[3] / 255;
pByte[2] = pByte[2] * pByte[3] / 255;
}
}
}
CDC* dc;
dc = GetDlgItem(IDC_STATIC_PNG)->GetDC();
image.Draw(dc->m_hDC, rc);
ReleaseDC(dc);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询