mfc 在列表框里显示位图问题
位图被白色盖住了,怎么办?if(pWnd->GetDlgCtrlID()==IDC_LIST1){CBitmapm_bitmap;m_bitmap.LoadBitmap(...
位图被白色盖住了,怎么办?
if(pWnd->GetDlgCtrlID()==IDC_LIST1)
{
CBitmap m_bitmap;
m_bitmap.LoadBitmap(IDB_BITMAP1);//加载位图
BITMAP bmp;
m_bitmap.GetBitmap(&bmp);//获取位图信息
CDC dcCompatible;
dcCompatible.CreateCompatibleDC(pDC);//创建兼容DC
CBitmap *oldbitmap=dcCompatible.SelectObject(&m_bitmap);
CRect rect;
GetDlgItem(IDC_LIST1)->GetWindowRect(rect);//获取list区域
ScreenToClient(&rect);
// pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY);
} 展开
if(pWnd->GetDlgCtrlID()==IDC_LIST1)
{
CBitmap m_bitmap;
m_bitmap.LoadBitmap(IDB_BITMAP1);//加载位图
BITMAP bmp;
m_bitmap.GetBitmap(&bmp);//获取位图信息
CDC dcCompatible;
dcCompatible.CreateCompatibleDC(pDC);//创建兼容DC
CBitmap *oldbitmap=dcCompatible.SelectObject(&m_bitmap);
CRect rect;
GetDlgItem(IDC_LIST1)->GetWindowRect(rect);//获取list区域
ScreenToClient(&rect);
// pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY);
} 展开
展开全部
你这个做法是实现不了列表框的背景图的。
你在对话框的DC中贴图,当然会被列表框覆盖了,这个只是做对话框背景图的一个方法。
列表框做背景图,有几个方案,最简单的,就是在对话框的OnCtrlColor中,用位图刷子代替控件的默认刷子。
不过这个做法,在列表框有文字之后,并不是很理想,要想得到理想效果,需要重载列表框,在OnDrawItem中绘制。
你在对话框的DC中贴图,当然会被列表框覆盖了,这个只是做对话框背景图的一个方法。
列表框做背景图,有几个方案,最简单的,就是在对话框的OnCtrlColor中,用位图刷子代替控件的默认刷子。
不过这个做法,在列表框有文字之后,并不是很理想,要想得到理想效果,需要重载列表框,在OnDrawItem中绘制。
追问
我试试位图刷子
追答
可以试试,如果是CListBox,用这个没问题。CListCtrl要复杂一些。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询