Visual c++ MFC中CStatic文本的意外边框
下面是实际绘制文本的代码摘录,类Visual c++ MFC中CStatic文本的意外边框,visual-c++,mfc,Visual C++,Mfc,下面是实际绘制文本的代码摘录,类MineCStatic源自CStatic,其成员m_textColor由客户端代码设置: SIZE si; if(::GetTextExtentPoint32(pDC->m_hDC, str, (int)str.GetLength(), &si)) { CSize size = si; pDC->SetTextColor( m_textColor ); pDC->Se
MineCStatic
源自CStatic
,其成员m_textColor
由客户端代码设置:
SIZE si;
if(::GetTextExtentPoint32(pDC->m_hDC, str, (int)str.GetLength(), &si))
{
CSize size = si;
pDC->SetTextColor( m_textColor );
pDC->SetBkMode(TRANSPARENT);
DWORD style = GetStyle();
if(m_bDrawTransparent)
style &= ~SS_OWNERDRAW;
if(style & SS_CENTER )
pDC->TextOut((rect.Width()-size.cx)/2,(rect.Height()-size.cy)/2,str,str.GetLength());
else if(style & SS_RIGHT)
pDC->TextOut(rect.Width()-size.cx,(rect.Height()-size.cy)/2,str,str.GetLength());
else
pDC->TextOut(0,0,str,str.GetLength());
}
结果如下(默认为黑色):
绿色边缘的颜色在哪里?如何消除它。可能是抗锯齿。请尝试将背景色设置为接近平均背景色,即使理论上您没有使用背景色。@Markransem实际上,当我将背景图像设置到控件时,背景色将消失,我想通过设置背景色也可以工作。另请参阅和。
m_title_font = new CFont;
createFontResult =
m_title_font->CreateFont(64*rate,0,0,0,FW_HEAVY,FALSE, FALSE,
FALSE,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH, "Arial");
m_text.Create("0%",WS_EX_TRANSPARENT|SS_OWNERDRAW ,rc,this,IDC_PATCH_CURRENTDATA);
m_text.SetFont(m_title_font); // MineCStatic instance