现在有个问题,我知道了 字体名,字体大小,粗体,我需要得到 字符串“A1B”的宽度,该怎么做呀,朋友们帮帮忙?因为 字体名Arial 字体大小36 粗体 的情况下“A1B”的宽度 和 
     字体名黑体  字体大小36 粗体 的情况下“A1B”的宽度 是不一样的吧。
请大家帮帮忙,怎么样得到 字符的宽度?
先给100分,解决了再给 100.

解决方案 »

  1.   

    楼主是想用CreateFont创建字体的吗
    font->CreateFont(15,0,0,0,FW_NORMAL,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,
    CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_SWISS,"Arial");
    要想得到一个字符串的宽度及高度
    CSize SizeTemp;
    SizeTemp=pDC->GetTextExtent(Str);
    SizeTemp.cx就是字符串的宽度
    SizeTemp.cy就是字符串的高度
    不过这都是像素值
      

  2.   

    1楼正解,不过要pDC->SelectObject(&font)选择字体。
      

  3.   

    The GetTextExtentPoint32 function computes the width and height of the specified string of text. BOOL GetTextExtentPoint32(
      HDC hdc,           // handle to DC
      LPCTSTR lpString,  // text string
      int c,      // characters in string
      LPSIZE lpSize      // string size
    );
      

  4.   

    也可以用
    CFont font;
    font.CreatePointFontIndirect 创建字体,然后用 GetTextExtentPoint32 估计宽度、高度注意 lfWeight 是 700 表示粗体
      

  5.   

    GetTextExtentPoint32可以得到一个字符或一个字符串的高度、宽度,而且可以用非等宽字体。
      

  6.   

    CFont *pFont = pDC->SelectObject( &mFont );
    CRect rcText(0,0,0,0);
    pDC->DrawText(_T("ABC"), &rcText, DT_CALCRECT);
    pDC->SelectObject( pFont );int cx = rcText.Width();
    int cy = rcText.Height();
      

  7.   


    CSize XXXX::GetLineStringCount(CDC*pDC,UINT nLinelength,CString strOut) 

    TEXTMETRIC  tm ; 
    UINT nTextCount=strOut.GetLength() ; 
    UINT nCount  = 0 ; 
    UINT nCurCount = 0 ;
    UINT nTextWidth = 0 ; 
    double nAveCharWidth = 0 ;
    CSize nSzInfo ;
    pDC->GetTextMetrics(&tm) ; 
    nCount = nLinelength/tm.tmAveCharWidth ; 
    nTextWidth = pDC->GetTextExtent(strOut).cx ; 
    if(nTextWidth<nLinelength)
    {
    nSzInfo.cx = nTextCount ;
        nSzInfo.cy = 1 ;
    return nSzInfo ;
    }
    else
    {
    nAveCharWidth = ((double)nTextWidth)/nTextCount ;
    nCurCount = (int)((double)nLinelength/nAveCharWidth) ;
    nSzInfo.cx = nCurCount<nCount?nCurCount:nCount ;
    nSzInfo.cy = ((nTextWidth-nTextWidth%nLinelength)/nLinelength) + (((nTextWidth%nLinelength)>0)?1:0);
    return nSzInfo ;
    }

      

  8.   

    GetTextExtentPoint32可以得到一个字符或一个字符串的高度、宽度,而且可以用非等宽字体。