在网上看到很多加载bmp格式的图片,但对加载png格式的图片却介绍的很少。下面我来写一种加载png格式图片的方法。
-
在对话框拖入一个Picture Control
-
先修改控件的ID,然后再给控件添加变量(先修改控件ID,不然不能给picture control添加变量)
-
添加成员变量CImage,变量类型CImage,变量名image,image1.
-
在XXXDlg文件中的OnInitDialog()函数中添加资源路径加载png图片。添加如下代码,路径自己更改:
BOOL CDlgCanshu::OnInitDialog()
{
CDialogEx::OnInitDialog();
//SetWindowLong(m_hWnd, GWL_HWNDPARENT, NULL);
//CRgn m_rgn;
//RECT rc;
GetWindowRect(&rc); //有边框对话框
//GetClientRect(&rc);//无边框对话框
//m_rgn.CreateRoundRectRgn(rc.left, rc.top, rc.right, rc.bottom, 20, 20); //矩形圆角
m_rgn.CreateEllipticRgn(rc.left,rc.top,rc.right,rc.bottom);//椭圆
//SetWindowRgn(m_rgn, TRUE);
// TODO: 在此添加额外的初始化
m_font.CreatePointFont(90, L"黑体");
image.Load(_T("C:\\Users\\Wang\\Desktop\\我的项目\\TTSDetection\\image\\di.png"));
image1.Load(_T("C:\\Users\\Wang\\Desktop\\我的项目\\TTSDetection\\image\\touming.png"));
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
- 在OnPaint()函数中添加如下代码(如果在主界面中就在else代码块添加代码,如果在子界面中就使用类向导添加OnInit和OnPaint函数,在函数里面添加对应代码)
void CDlgCanshu::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
CRect rect, rect1;
m_canshupic1.GetWindowRect(&rect);
m_canshupic2.GetWindowRect(&rect1);
ScreenToClient(&rect);
ScreenToClient(&rect1);
CDialogEx::OnPaint();
//绘制图片
image.Draw(dc, rect);
image1.Draw(dc, rect1);
}
- 代码运行成功如下:
该界面就是由两张背景图组成的。