VC Static 背景图 文字刷新问题 解决方法

今天遇到Static 加背景图刷新问题。


m_pBitmap->LoadBitmap(bmpID);
......
pOldBitmap = memDC.SelectObject(m_pBitmap);
memDC.SetBkMode(TRANSPARENT);
......
memDC.TextOut(0,12,strText);



然后刷新总是出问题。文字叠加。显示变“脏”。

类似问题帖子:http://bbs.csdn.net/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();
	}
}


每次刷新,调用上面函数即可。



猜你喜欢

转载自blog.csdn.net/evan369/article/details/38955141
今日推荐