今天遇到Static 加背景图刷新问题。
m_pBitmap->LoadBitmap(bmpID);
......
pOldBitmap = memDC.SelectObject(m_pBitmap);
memDC.SetBkMode(TRANSPARENT);
......
memDC.TextOut(0,12,strText);
然后刷新总是出问题。文字叠加。显示变“脏”。
类似问题帖子:http://bbs.youkuaiyun.com/topics/320265308#new_post 没有发现正解。
做了很多测试,终于找到问题原因,添加行之有效的解决方法。
void CColorStatic::InvalidateTransparent()
{
if (m_pBitmap == NULL)
{
return;
}
else
{
//SetBkMode(TRANSPARENT)时,不重新加载图片,文字会更改m_pBitmap内容,即显示会变"脏"。xy
m_pBitmap->DeleteObject();
m_pBitmap->LoadBitmap(m_bmpID);
//以下方法皆不可行。
// CRect rc;
// this->GetWindowRect(rc);
// CWnd *pParent = this->GetParent();
// pParent->ScreenToClient(rc);
// pParent->InvalidateRect(rc);
// pParent->UpdateWindow();
// pParent->RedrawWindow();
}
}
每次刷新,调用上面函数即可。