MFC-HFONT字体

GDI中默认的字体,是系统等宽字体,比如对话框标题一般就采用这个字体。 

LOGFONT

LOGFONT是Windows内部字体的逻辑结构,主要用于设置字体格式,其定义如下:

    typedef struct tagLOGFONT {
        LONG  lfHeight;  //字体高度
        LONG  lfWidth;  //字体宽度
        LONG  lfEscapement;  //字体显示的角度
        LONG  lfOrientation; //字体的角度
        LONG  lfWeight; //字体的磅数(字体的深浅程度).取值范围0--1000,400为正常字体,700为黑体 0位默认值
        BYTE  lfItalic; //斜体字体
        BYTE  lfUnderline; //带下划线字体
        BYTE  lfStrikeOut; //带删除线字体
        BYTE  lfCharSet; //所需字符集
        BYTE  lfOutPrecision; //输出的精度
        BYTE  lfClipPrecision;//裁剪精度
        BYTE  lfQuality;//逻辑字体和输出设备的实际字体间的间距
        BYTE  lfPitchAndFamily; //字体间距和字体集
        TCHAR lfFaceName[LF_FACESIZE]; //字体名称
    } LOGFONT, * PLOGFONT;

 

 

HFONT

    
    HDC hdc = ::GetDC(m_hWnd);
    LOGFONT lf = { 0 };
    lf.lfWeight = 16; //平均宽度
    lf.lfHeight = 40;//字体高度
    lf.lfCharSet = GB2312_CHARSET;//字符集
        //如GB2312_CHARSET,CHINESEBIG5_CHARSET等
    //GB2312是中国国家标准的简体中文字符集。它所收录的汉字已经覆盖99.75%的使用频率,基本满足了汉字的计算机处理需要
    lstrcpy(lf.lfFaceName, _T("宋体"));
    //指向NULL结尾的字符串的指针,其长度不能超过32个字符,如果为空,则使用系统默认的字体

    
    HFONT hfont = ::CreateFontIndirect(&lf);//创建逻辑字体
    /*
    创建的字体具有LOGFONT对象确定的特性
    参数:CONST LOGFONT *lplf
    返回值:如果函数调用成功,返回值是逻辑字体的句柄;如果函数调用失败,返回值是NULL

    */

    HFONT holdfont = (HFONT)SelectObject(hdc, hfont);
    /*
    SelectObject返回的类型是HGDIOBJ,需要强转
    */

    RECT rect = { 50,50,400,400 };
    DrawText(hdc, _T("GDI测试"), -1, &rect, DT_LEFT);

    SelectObject(hdc, holdfont);
    DeleteObject(hfont);

 

 

 

 

 

 

 

 

 

 

posted @ 2023-04-16 09:55  天子骄龙  阅读(279)  评论(0)    收藏  举报