现在我知道了字体的大小,请问如何确定逻辑字体的高度和宽度

解决方案 »

  1.   

    windows程序设计说的很清楚,还带图例呢
      

  2.   


    我有看到过 "高度 = 字体大小 , 宽度 = 字体大小/2" 不知道正不正确
    我现在是要处理阿拉伯文字,采用的Arial字体,不知道这个规则对于阿拉伯文字是否适用
      

  3.   

    windows程序设计说的很清楚,还带图例呢 
      

  4.   

    好吧,windows程序设计里边的介绍我看了,但是那个方法对于我目前所开发的项目并不适用。
    现在是处理文字的排版,其中有一个功能是按一定比例放大整个视图。
    这时视图中的文字就需要重新绘制。
    我的做法如下
    LOGFONT lf;
    lf = GetLogFont();
    lf.lfHeight *= m_fScale;
    lf.lfWidth *= m_fScale;
    CFont font;
    font.CreateFontIndirect(&lf);
    m_pDC->SelectObject(&font);
    其中m_fScale是缩放比例,GetLogFont()是一个自定义函数,在这个函数里要做的是:根据用户设置的字体属性,包括字体名称,大小,粗体,斜体等...
    来确定lf.lfHeight,lf.lfHeight的值。
    所以我需要知道字体大小和高.宽三者之间的一个关系
      

  5.   

    如果你是用 ChooseFont 这个函数来选择字体,那么你可以用一个 LOGFONT 结构体来初始化它。当用户选择了字体之后,该结构体会被填充,你可以从中取得你需要的信息。
    Point 和 lfHeight 的关系 MSDN 有说明:
    lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);
    但是 lfWidth 的值确实不好直接确定,就像你说的需要根据是否选择了粗体等来确定。
      

  6.   

    你可以根据m_fScale缩放比例来选择合适的字体重绘上去
      

  7.   

    很可惜 字体设置方式是根据需要自行设计的,font dialog box 不灵活,在这里是不能使用的。
    谢谢您的回答。
      

  8.   

    CreateFont() 里面有个参数是设置字体的大小,其他信息也可以设置