请教怎么让对话框背景图随着框的大小而变化
请问如何让对话框背景图随着框的大小而变化?
我现在可以给对话框里加入背景图了,可是我一调整对话框的大小后,上次显示的图片会覆盖新的图片,这是我的代码,请高手帮帮忙!谢谢
void CtestDlg::OnPaint()
{
CPaintDC dc(this);
GetClientRect(&rect);
m_Bmap=(HBITMAP)::LoadImage(NULL,cc,IMAGE_BITMAP,rect.right,rect.bottom,LR_LOADFROMFILE);
memdc=::CreateCompatibleDC(dc.m_hDC);
::SelectObject(memdc,m_Bmap);
BitBlt(dc.m_hDC,0,0,rect.right,rect.bottom,memdc,0,0,SRCCOPY);
}
------解决方案--------------------
你上边在OnPaint里有加载原图片的代码,所以你无论在任何地方加载新图片,最后Invalidate的时候调用OnPaint却又重新加载原始图片了.所以永远都是显示原图片
OnPaint下只要一行BitBlt(dc.m_hDC,0,0,rect.right,rect.bottom,memdc,0,0,SRCCOPY);
把创建设备DC/加载图片的代码放在一个函数中,当调整对话框大小的时候,调用这个函数,再调用一下Invalidate
另外StretchBlt函数可以放大/缩小图片,参数与bitblt一样
我现在可以给对话框里加入背景图了,可是我一调整对话框的大小后,上次显示的图片会覆盖新的图片,这是我的代码,请高手帮帮忙!谢谢
void CtestDlg::OnPaint()
{
CPaintDC dc(this);
GetClientRect(&rect);
m_Bmap=(HBITMAP)::LoadImage(NULL,cc,IMAGE_BITMAP,rect.right,rect.bottom,LR_LOADFROMFILE);
memdc=::CreateCompatibleDC(dc.m_hDC);
::SelectObject(memdc,m_Bmap);
BitBlt(dc.m_hDC,0,0,rect.right,rect.bottom,memdc,0,0,SRCCOPY);
}
------解决方案--------------------
你上边在OnPaint里有加载原图片的代码,所以你无论在任何地方加载新图片,最后Invalidate的时候调用OnPaint却又重新加载原始图片了.所以永远都是显示原图片
OnPaint下只要一行BitBlt(dc.m_hDC,0,0,rect.right,rect.bottom,memdc,0,0,SRCCOPY);
把创建设备DC/加载图片的代码放在一个函数中,当调整对话框大小的时候,调用这个函数,再调用一下Invalidate
另外StretchBlt函数可以放大/缩小图片,参数与bitblt一样