关于字体的疑问

“”当我们将一个字体选择到“设备描述表”中的时候,它会返回先前的字体。为此我们需要定义一个字体指针,用于保护先前的字体,“”,这句话的意思是不是意味着如果不保护冼前的字体,那先前的字体就会被丢掉,以后是我们设置的字体。事实证明如果不保护先前的字本,我们新设置的字体不起作用。

void CTest3View::OnDraw(CDC* pDC)
{
CTest3Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

CFont  font;

font.CreatePointFont(200,"黑体"); //创建字体大小、类型

CFont *pFont;  //创建一个指针,用于存放字体

pFont = pDC->SelectObject(&font);//把要显示的字体放入指针,

pDC ->TextOut(0,0,"ok");//
pDC->SelectObject(&pFont);//重新将字体放入设备描述表中,以备下次使用
}


TEXTMETRIC它是一个数据结构:用来度量文本字体的各个属性。

TEXTMETRIC { // tm
    LONG tmHeight;                  //字符高度
    LONG tmAscent;                  //字符上部高度(基线以上)
    LONG tmDescent;                 //字符下部高度(基线以下)
    LONG tmInternalLeading;         //由tmHeight定义的字符高度的顶部空间数目
    LONG tmExternalLeading;         //加在两行之间的空间数目
    LONG tmAveCharWidth;            //平均字符宽度
    LONG tmMaxCharWidth;            //最宽字符的宽度
    LONG tmWeight;                  //字体的粗细轻重程度
    LONG tmOverhang;                //加入某些拼接字体上的附加高度
    LONG tmDigitizedAspectX;        //字体设计所针对的设备水平方向
    LONG tmDigitizedAspectY;        //字体设计所针对的设备垂直方向
    BCHAR tmFirstChar;              //为字体定义的第一个字符
    BCHAR tmLastChar;               //为字体定义的最后一个字符
    BCHAR tmDefaultChar;            //字体中所没有字符的替代字符
    BCHAR tmBreakChar;              //用于拆字的字符
    BYTE tmItalic;                  //字体为斜体时非零
    BYTE tmUnderlined;              //字体为下划线时非零
    BYTE tmStruckOut;               //字体被删去时非零
    BYTE tmPitchAndFamily;          //字体间距(低4位)和族(高4位)
    BYTE tmCharSet;                 //字体的字符集
} TEXTMETRIC;

猜你喜欢

转载自blog.csdn.net/dyz_123456/article/details/70141927