CPaintDC dc(this); // device context for painting
CDC mapDc;
/* ........................... */
CBitmap addrBitmap;
CFont font;
font.CreateFont(30, 14, 0, 0, FW_BOLD, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, VARIABLE_PITCH | FF_DONTCARE,"Arial") ;
addrBitmap.CreateCompatibleBitmap(&dc, 80, 60);
mapDc.SetBkMode(TRANSPARENT);
dc.SetBkMode(TRANSPARENT);
mapDc.SelectObject(&addrBitmap);
mapDc.SelectObject(&font);
mapDc.SetTextColor(RGB(0,0,255));
mapDc.TextOutA(0, 0, addrBuffer, strlen(addrBuffer));
dc.BitBlt(XREPLACEMENT, 426, 68, 60, &mapDc, 0, 0, SRCCOPY);
addrBitmap.DeleteObject();
font.DeleteObject();
/* etc */
проблема с прозрачностью фона выводимого на экран текста
Вывожу в MFC приложении прям на форму текст:
Код:
Но фон у текста всё равно есть и чёрного цвета. Отсюда вопрос - почему? И как сделать, чтобы он был прозрачным?
в статьях про вывод текста c MFC используется DrawText. Заюзал её.. та же фигня - фон чёрный.
Код:
CBitmap addrBitmap;
CFont font;
CRect rect;
font.CreateFont(30, 14, 0, 0, FW_BOLD, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, VARIABLE_PITCH | FF_DONTCARE,"Arial") ;
addrBitmap.CreateCompatibleBitmap(&dc, 80, 60);
mapDc.SetBkMode(TRANSPARENT);
dc.SetBkMode(TRANSPARENT);
mapDc.SelectObject(&addrBitmap);
mapDc.SelectObject(&font);
mapDc.SetTextColor(RGB(0,0,255));
rect.OffsetRect( 0, 0);
mapDc.DrawText(addrBuffer, strlen(addrBuffer), rect, DT_NOCLIP ) ;
//mapDc.TextOutA(0, 0, addrBuffer, strlen(addrBuffer));
dc.BitBlt(XREPLACEMENT, 426, 68, 60, &mapDc, 0, 0, SRCCOPY);
addrBitmap.DeleteObject();
font.DeleteObject();
CFont font;
CRect rect;
font.CreateFont(30, 14, 0, 0, FW_BOLD, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, VARIABLE_PITCH | FF_DONTCARE,"Arial") ;
addrBitmap.CreateCompatibleBitmap(&dc, 80, 60);
mapDc.SetBkMode(TRANSPARENT);
dc.SetBkMode(TRANSPARENT);
mapDc.SelectObject(&addrBitmap);
mapDc.SelectObject(&font);
mapDc.SetTextColor(RGB(0,0,255));
rect.OffsetRect( 0, 0);
mapDc.DrawText(addrBuffer, strlen(addrBuffer), rect, DT_NOCLIP ) ;
//mapDc.TextOutA(0, 0, addrBuffer, strlen(addrBuffer));
dc.BitBlt(XREPLACEMENT, 426, 68, 60, &mapDc, 0, 0, SRCCOPY);
addrBitmap.DeleteObject();
font.DeleteObject();
Код:
CPaintDC dc(this); // device context for painting
dc.TextOut(...);
dc.TextOut(...);