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控件上的程序,该怎么写呢? } 展开
 我来答
百度网友2018359
2016-11-02 · TA获得超过3494个赞
知道大有可为答主
回答量:3486
采纳率:73%
帮助的人:1435万
展开全部

这样??? GIF动图, 请单击一下图片

追问
是的是的
追答

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);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式