方法一:利用Picture控件
(1)新建MFC应用程序
(2)在应用程序中,选择基于对话框,其他保持默认即可
(3)右击项目,选择添加资源
(4)在工具箱里找到Picture控件拖到界面中
(5)在界面上点击选中Picture控件,然后在属性的Type下拉框中,选择Bitmap
(6)再在Picture控件的属性的Type下拉框中插入的图片资源选择好后,图片就可以加载进对话框
方法二:重载OnCtlColor()函数
(1)和方法一一样插入一个图片
(2)在项目的头文件里public:添加CBrush m_brBk ;
(3)在初始化函数中添加如下代码:
(4)点击控件的消息栏,在栏框中添加OnCtlColor函数
运行程序后两种方法都能成功显示图片,但是这样做有一个缺点,就是所能用的图片格式比较少,一般只有bitmap格式的图片才行,并且图片太大可能都无法读取,所以第三种方法个人比较推荐:
方法三(3)CImage:
(1)在工程的类中添加:public:CImage m_image; //创建图片类
(2)在初始化函数中:
程序中自己给每个步骤都给了注释,这样看的更明白一些
(3)添加onpaint函数:
void CABCBankDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CWnd * pPic = GetDlgItem(IDC_PIC1);
if (pPic == NULL)
{
AfxMessageBox(TEXT("Get Pic Error!"));
return;
}
RECT rc;
pPic->GetClientRect(&rc);//获得pictrue控件所在的矩形区域
CDC *pDC=pPic->GetDC();//获得pictrue控件的DC
m_image.Draw(pDC->m_hDC, rc); //将图片画到Picture控件表示的矩形区域
ReleaseDC(pDC);//释放picture控件的DC
CDialogEx::OnPaint();
}
}
运行以后,一样显示出图片,但是对于图片的范围更加广泛,可以添加自己喜欢的图片作为背景
1500

被折叠的 条评论
为什么被折叠?



