GDI中, 用CDC画图时, 如何将新画的图设置成背景?
设置CDC为TRANSPARENT了.
因为我要在上面写文字,发现文字的背景是最先的背景,而导致新画上的图形背覆盖,
我想实现的是文字写上去后,它的背景是我刚刚完成的画图? 希望的到指教???
设置CDC为TRANSPARENT了.
因为我要在上面写文字,发现文字的背景是最先的背景,而导致新画上的图形背覆盖,
我想实现的是文字写上去后,它的背景是我刚刚完成的画图? 希望的到指教???
{
if ( pDC == NULL ) return; CRect rcMap;
GetClientRect(rcMap);
if ( rcMap.IsRectEmpty() ) return; CDC MemDC;
CBitmap MemBitmap;
MemDC.CreateCompatibleDC(NULL);
ASSERT ( MemDC );
MemDC.SetStretchBltMode(HALFTONE);
MemDC.SetMapMode(TRANSPARENT);
MemBitmap.CreateCompatibleBitmap(pDC ,rcMap.Width(),rcMap.Height());
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap); // 设置背景色.
MemDC.FillSolidRect( rcMap, COL_BACKGROUND ); m_pCurPos.x = rcMap.Width()/2;
m_pCurPos.y = rcMap.bottom/2; for ( int i=0; i<m_nMoveCount; i++ )
DrawMoveItem(&MemDC,i); // Copy DC
pDC->BitBlt(rcMap.left,rcMap.top,rcMap.Width(), rcMap.Height(),&MemDC,0,0,SRCCOPY);
//Draw over, delete dc memory
MemBitmap.DeleteObject();
MemDC.DeleteDC();
}void CCreateMap::DrawMoveItem(CDC *pDC, int nIndex)
{
// ...... 画图形过程.
// 不是导入图象,是通过画图函数画的图,
// 写文字.
DrawTheText(....);// 但是就是不行,文字背景是黑色(开始设置的颜色).
}void CCreateMap::DrawTheText(CDC* pDC, CRect rcItem, COLORREF col, LPCTSTR lpText, BOOL bLeft /*= TRUE*/)
{
pDC->SetTextColor ( col );
CFont* def_font = pDC->SelectObject(&m_SysFont);
pDC->DrawText(lpText, strlen(lpText), rcItem,(bLeft?DT_LEFT:DT_RIGHT));
pDC->SelectObject(def_font);
}>>>>>>>>>>>>>
不知道在那里出了问题???
// 不是导入图象,是通过画图函数画的图,
pDC->SetBkColor(TRANSPARENT);
// 写文字.
DrawTheText(....);// 但是就是不行,文字背景是黑色(开始设置的颜色).
// 不是导入图象,是通过画图函数画的图,
pDC->SetBkColor(TRANSPARENT);
// 写文字.
DrawTheText(....);// 但是就是不行,文字背景是黑色(开始设置的颜色).
写错了
pDC->SetBkMode(TRANSPARENT);
方到这里面就无效呢?void CCreateMap::DrawTheText(CDC* pDC, CRect rcItem, COLORREF col, LPCTSTR lpText, BOOL bLeft /*= TRUE*/)
{
pDC->SetMapMode(TRANSPARENT);
pDC->SetTextColor ( col );
CFont* def_font = pDC->SelectObject(&m_SysFont);
pDC->DrawText(lpText, strlen(lpText), rcItem,(bLeft?DT_LEFT:DT_RIGHT));
pDC->SelectObject(def_font);
}
修改成就好了??
pDC->SetTextColor ( col );
pDC->SetMapMode(TRANSPARENT);