VC使用指定字体绘制文字

李国帅 2007.5

这段代码主要用在windows对话框和view中绘制指定颜色和字体的文字


CDC* pDC = GetDC();
CFont font;
VERIFY(font.CreateFont(
    12,                        // nHeight
    0,                         // nWidth
    0,                         // nEscapement
    0,                         // nOrientation
    FW_NORMAL,                 // nWeight
    FALSE,                     // bItalic
    FALSE,                     // bUnderline
    0,                         // cStrikeOut
    ANSI_CHARSET,              // nCharSet
    OUT_DEFAULT_PRECIS,        // nOutPrecision
    CLIP_DEFAULT_PRECIS,       // nClipPrecision
    DEFAULT_QUALITY,           // nQuality
    DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily
    _T("Arial")));                 // lpszFacename
//    LOGFONT lf;
//    memset(&lf, 0, sizeof(LOGFONT));       // Zero out the structure.
//    lf.lfHeight = 12;                      // Request a 12-pixel-height font.
//    lstrcpy(lf.lfFaceName, _T("Arial"));   // Request a face name "Arial".
//    VERIFY(font.CreateFontIndirect(&lf));  // Create the font.
CFont* pOldFont = (CFont*)pDC->SelectObject(&font);

char szText[50];
//股票名称
memset(szText, 0, sizeof(szText));
strcpy(szText, "hhhhhhhhhhhhhhhhh");
CRect m_DrawRect;
//类型控制栏
m_DrawRect = CRect(10, 10, 100, 100);
pDC->FillSolidRect(m_DrawRect, RGB(127, 0, 0));

pDC->SetBkColor(RGB(1, 1, 1));
pDC->SetTextColor(RGB(1, 1, 127));;
pDC->DrawText(szText, &m_DrawRect, DT_CENTER | DT_VCENTER | DT_SINGLELINE | DT_NOCLIP);
pDC->ExtTextOut(5, 5, ETO_OPAQUE, NULL, _T("Hello"), NULL);

pDC->SelectObject(pOldFont);
font.DeleteObject();

CFont *pNewFont = new CFont;
char cFontName[] = "宋体";//_T("GB321")
int    nFontSize = 16;
int    nFontStyle = 0;
LOGFONT font;
memset(&font, 0, sizeof(font));
font.lfHeight = -nFontSize;
font.lfWeight = FW_NORMAL;//FW_BOLD
font.lfCharSet = DEFAULT_CHARSET;
font.lfOutPrecision = OUT_CHARACTER_PRECIS;
font.lfItalic = TRUE;
font.lfUnderline = TRUE;
strcpy(font.lfFaceName, cFontName);
if (!pNewFont->CreateFontIndirect(&font))
{
    delete pNewFont;
    pNewFont = NULL;
}
//    if(!pNewFont->CreatePointFont( 120 , cFontName ) )
//    {
//        delete pNewFont;
//        pNewFont = NULL;
//    }
CDC* pDC = GetDC();
CFont* pOldFont = (CFont*)pDC->SelectObject(pNewFont);
...
    pDC->SelectObject(pOldFont);
pNewFont->DeleteObject();
delete pNewFont;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微澜-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值