为对话框设置一张背景图,当背景图大小与初始窗口不同时,会出现像素点叠加的失真情况
遇到这种问题,就要对缩放模式进行设置;
具体实现只需要在void CXXXXDlg::OnPaint()中添加dc.SetStretchBltMode(HALFTONE);
就行了;
具体代码如下:
void CXXXXDlg::OnPaint()
{
if (IsIconic())
{
.........
}
else
{
//CDialog::OnPaint();
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_Bg);
BITMAP bitmap;
bmpBackground.GetBitmap(&bitmap);
CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);
dc.SetStretchBltMode(HALFTONE); //*添加于此
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,
bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
}
}