CreateFont具体解释

CFont * f;
   f = new CFont;
   f->CreateFont(10, // nHeight
        0, // nWidth
        0, // nEscapement
        0, // nOrientation
        FW_BOLD, // 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")); // lpszFac

cHeight是字体的高度。
cWidth是字体的宽度。
cEscapement是字体的倾斜角。
cOrientation是字体的倾斜角。
cWeight是字体的粗细。
bItalic是字体是否斜体。
bUnderline是字体是否有下划线。
bStrikeOut是字体是否有删除线。
iCharSet是字体使用的字符集。
iOutPrecision是指定怎样选择合适的字体。
iClipPrecision是用来确定裁剪的精度。
iQuality是怎么样跟选择的字体相符合。
iPitchAndFamily是间距标志和属性标志。
pszFaceName是字体的名称。

函数功能:该函数创建一种有特殊性的逻辑字体,此逻辑字体能够在后面被不论什么设备选择。

函数原型:HFONT CreateFont(int nHeight, int nWidth, int nEscapement, int nOrientation, int fnWeight, DWORD fdwltalic, DWORD fdwUnderline, DWORD fdwStrikeOut, DWORD

fdwCharSet, DWORD fdwOutputPrecision, DWORD fdwClipPrecision, DWORD fdwQuality, DWORD fdwPitchAndFamily, LPCTSTR lpszFace);

參数:

nHeight:指定字体的字符单元或字符的逻辑单位高度,字符的高度值(也被称为em高度)是指字符单元高度值减去内部标头值。字体映射器以例如以下方式解释nHeight指定的值,各值含义

为:

>0:字体映射器转换这个值以设备单位,并和已有字体的单元高度相匹配。

0:字体映射器转换在选择匹配时用一个缺省的高度值。

<0:字体映射器转换这个值到设备单位,并将它的绝对值和已有字体的字符高度相匹配。

比較全部的高度,字体映射器选择不超过要求大小的最大字体。

此映射当字体第一次被使用时发生。

对于MM_TEXT映射方式,能够用以下的公式为一种指定了点大小的字体确定高度:

nHeight=-MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY),72)

nWidth:指定所要求字体的字符的逻辑单位的平均宽度。假设此值为0,字体映射器选择一个closest match值,closest match值是由比較当前设备的特征系数与可使用字体的数字化特征

系数之差的绝对值而确定的。

nEscapement:指定移位向量和设备X轴之间的一个角度,以十分之中的一个度为单位。移位向量平行于正文行的基线。

Windows NT:当图形设备设置为GM_ADVANCED时,能够不依赖字符串的字符的定位角而指定字符串的移位角。

当图形模式被设置为GM_COMPATIBLE时,nEscapement同一时候指定移位角和定位角,能够设置nEscapement和nOrientation为同样的值。

Windows 95:nEscapement同一时候指定移位角和定位角,可设置nEscapement和nOrientation为同样的值。

nOrientation:指定每一个字符的基线和设备X轴之间的角度。

FnWeight:在0到1000之间指定字体的权值,如400表示标准体,700表示黑(粗)体,假设此值为0,则使用缺省的权值。

为方便定义,可使用例如以下值:

FW_DONTCARE:0;FW_THIN;100;FW_EXTRALIGHT;200;FW_ULTRALIGHT;200;FW_LIGHT;300;

FW_NORMAL:400;FW_REGULAR;400;FW_MEDIUM;500;FW_SEMIBOLD;600;FW_DEMIBOLD;600;

FW_BOLD:700;FW_EXTRABOLD;800;FW_ULTRABOLD;800;FW_HEAVY;900;FW_BLACK;900。

fdwItalic:假设设置为TRUE则指定斜体。

fdwUnderline:假设设置为TRUE,则指定加下划线的字全。

fdwStrikeOut:假设设置为TRUE,则strikeout指定字体。

fdwCharSet:指定字符集,下列值是提前定义的:

ANSI_CHARSET; BALTIC_CHARSET; CHINESEBIG5_CHARSET; DEFAULT_CHARSET;

EASTEUROPE_CHARSET; GB2312_CHARSET; GREEK_CHARSET; HANGUL_CHARSET; MAC_CHARSET; OEM_CHARSET; RUSSIAN_CHARSET; SHIFTJIS_CHARSET;

SYMBOL_CHARSET; TURKISH_CHARSET。

韩国Windows:JOHAB_CHARSET;

中东地区Windows:HEBREW_CHARSSET; ARABIC_CHARSET

泰国Windows:THAI_CHARSET

OEM_CHARSET指定的字符集与操作系统有关。

能够使用DEFAULT_CHARSET值来同意字体的名字和大小来充分描写叙述逻辑字体。假设指定的字体名不存在,不论什么字符集的字体都能够替代指定的字体,所以应该小心地用

DEFAULT_CHARSET来避免不期望的结果出现。

操作系统中存在其它字符集的字体。假设一个应用程序用一种未知字符集的字体,则应用程序不会试图去翻译或解释用那种字体写出来的字符串。

在字体映射过程中此參数非常重要。为确保获得一致的结果,指定一个特殊的字符集。假设在lpszFace參数中指定了一个字体名,确定fdwCharSet值与由lpszFace指定的字体字符集是否匹

配。

fdwOutputPrecision:指定输出精度,输出精度义输出与要求的字体高度、宽度、字符定位、移位、字符间距和字符类型的匹配程序,它可取下列值之中的一个:

OUT_CHARACTER_PRECIS;未用。

OUT_DEFAULT_PRECIS:指定缺省的字体映射器状态。

OUT_DEVICE_PRECIS:指示字体映射器在当系统里有多种字体使用同一个字体使用同一个名字时选择一种设备字体。

OUT_OUTLINE_PRCIS:在Windows NT中此值指示字体映射器从TrueType和其它基于边框的字体中选择。

OUT_RASTER_PRECIS:指示字体映射器在当系统里有多种字体使用同一个名字时选择一种光栅字体。

OUT_STRING_PRECIS:此值没有被字全映射器使用,可是当扫描字体被列举时作为返回值。

OUT_STROKE_PRECIS:在Windows NT中此值没有被字体映射器使用,可是当TrueType字体、其它基于边框的字体和向量字体被列举时,作为返回值。

Windows 95:此值没有被字体映射器使用,可是当TrueType字体或向量字体被列举时,作为返回值。

OUT_TT_ONLY_PRECIS:指示字体映射器仅从TrueType字体中选择,假设系统中没有安装TrueType字体,则字体映射返回缺省状态。、

OUT_TT_PRECIS:指示字体映射器在当系统里有多种同名的字体时选择一种TrueType字体。

当操作系统含有多种与指定名字同名的字体时,应用程序能够使用OUT_DEVICE_PRECIS,OUT_RASTER_PRECIS和OUT_TT_PRECIS值来控制字体映射器怎样选择一种字体,比如,

假设操作系统含有名字Symbol的光栅和TrueType两种字体,指定OUT_TT_PRECIS使字体映射器选择TrueType方式。指定OUT_TT_ONLY_PRECIS使字体映射器选择一种TrueType字体,

虽然这会给TrueType字体换一个名字。

fdwClipPrecision;指定裁剪精度,裁剪精度定义怎样裁剪部分超出裁剪区的字符,它可取一个或多个下列值:

CLIP_DEFAULT_PRECIS:指定缺省裁剪状态。CLIP_CHARACTER_PRECIS:未用。

CLIP_STROKE_PRECIS:未被字体映射器使用,可是当光栅字体、向量字体或TrueType字体被列举时作为返回值。在Windows环境下,为保证兼容性,当列举字体时这个值总被返回。

CLIP_MASK:未用。CLIP_EMBEDDED:要使用嵌入式仅仅读字体必须使用此标志。

CLIP_LH_ANGLES:当此值被使用时,全部字体的旋转依赖于坐标系统的定位是朝左的还是朝右的。

假设未使用此值,设备字体总是逆时针方向旋转,但其它字体的旋转依赖于坐标系统的定向。要得到很多其它关于坐标系统定向的信息,參见參数orientation。

CLIP_TT_ALWAYS:未用。

fdwQuality:指向输出质量,输出质量定义GDI怎样细致地将逻辑字体属性与实际物理字体属性相匹配。它可取下列值之中的一个:

DEFAULT_QUALITY:字体的外观不重要。

DRAFT_QUALITY:字体外观的重要性次于使用PROOF_QUALITY时,对GDI光栅字体,缩放比例是活动的,这意味着多种字体大小可供选择,但质量可能不高,假设有必要,粗体、斜体

、下划线、strikeout字体可被综合起来使用。

PROOF_QUALITY:字符质量比精确匹配逻辑字体字体属性更重要。对GDI扫描字体,缩放比例是活动的,并选择最接近的大小。虽然当使用PROOF_QUALITY时,选择字体大小并不完

全匹配,但字体的质量非常高,并没有外观上的变形。假设有必要,粗体、斜体、下划线、strikeout字体可被综合起来使用。

fdwPitchAndFamily:指定字体间距和字体族,低端二位指定字体的字符间距,它可取下列值之中的一个:

DEFAULT_PITCH;FIXED_PITCH; VARIABLE_PITCH

高端四位指定字体族,可取下列值之中的一个:

FF_DECORATIVE:新鲜的字体,如老式英语(Old English)。FF_DONTCARE:不关心或不知道。

FF_MDERN:笔划宽度固定的字体,有或者无衬线。如Pica、Elite和Courier New。

FF_ROMAN:笔划宽度变动的字体,有衬线。如MS Serif。

FF_SCRIPT:设计成看上去象手写体的字体。如Script和Cursive。

FF_SWISS:笔划宽度变动的字体,无斜线。如MS Sans Serif。

应用程序能够用运算符OR将字符间距和字体族组合起来给fdwPitchAndFamily赋值。

字体族描写叙述一种字体的普通外观,当全部的精确字样都不能使用时,可用它们来指定字体。

lpszface:指向指定字体的字样名的、以/0结束的字符串指针,字符串的长度不能超过32个字符(包含字符/0),函数EnumFontFamilies可用来列举全部当前可用字体的字样名。

假设lpszFace为NULL或指向一个空串,GDI使用能匹配其它属性的第一种字体。

返回值:假设函数调用成功,返回值是一种逻辑字体句柄;假设函数调用失败,返回值为NULL。

Windows NT:若想获得很多其它错误信息,请调用GetLastError函数。

备注:当一种字体不再使用时,可用DeleteObject来删除。

为保护那些提供字体给Windows和Windows NT的卖主的版权,基于Win32的应用程序总是列出所选择字体的准确名字。因为不同的系统会使用不同的字体,不要觉得所选择字体就是要

求的字体。比如,假设要求名叫Palatino的字体,但系统没提供那样一种字体,则字体映射器将会以一种不同名但有类似属性的字体取而代之。系统总是将用户选择的字体名报告出来。

速查:Windows NT:3.1及以上版本号;Windows:95及以上版本号;Windows CE:不支持;头文件:wingdi.h;库文件:gdi32.lib;Unicode:在Windows NT环境下以Unicode和ANSI

两种方式实现。

时间: 2024-10-06 02:56:30

CreateFont具体解释的相关文章

CreateFont详细解释

CFont * f;    f = new CFont;    f->CreateFont(10, // nHeight         0, // nWidth         0, // nEscapement         0, // nOrientation         FW_BOLD, // nWeight         FALSE, // bItalic         FALSE, // bUnderline         0, // cStrikeOut        

Java基础知识强化99:Java 常见异常及趣味解释

常见 Java 异常解释:(译者注:非技术角度分析.阅读有风险,理解需谨慎:) 1. java.langjava.lang软件包是java语言的核心部分,它提供了java中的基础类. java.lang.Object,这是java.lang的根类,也是所有java类的超类. java.lang ArithmeticException 出现异常的运算条件时,抛出此异常.例如,一个整数"除以零" 你正在试图使用电脑解决一个自己解决不了的数学问题,请重新阅读你的算术表达式并再次尝试. Arr

CFont::CreateFont

CFont::CreateFont   初始化指定特性的一 CFont 对象. BOOL CreateFont( int nHeight, int nWidth, int nEscapement, int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline, BYTE cStrikeOut, BYTE nCharSet, BYTE nOutPrecision, BYTE nClipPrecision, BYTE nQuality, B

做预解释题的一点小方法和小技巧

在JavaScript中的函数理解中预解释是一个比较难懂的话题.原理虽然简单,寥寥数言,但其内涵却有深意,精髓难懂.如何在轻松活跃的头脑中将它学会,现在针对我在学习中的一点小窍门给大家分享一下,希望能给大家一些帮助: 万事需遵循"原理"--"预解释"无节操和"this"指向:(可先看例题解析然后结合原理进行学习) (感谢蕾蕾老师给归纳的预解释无节操原理:) 如果函数传参数则先于以下执行,就相当于在函数私有作用域下var了一个变量:根据作用域原理,

Android插件实例——360 DroidPlugin具体解释

在中国找到钱不难,但你的一个点子不意味着是一个创业.你谈一个再好的想法,比方我今天谈一个创意说,新浪为什么不收购GOOGLE呢?这个创意非常好.新浪一收购GOOGLE.是不是新浪就变成老大了?你从哪儿弄来钱?怎么去整合GOOGLE呢: 之前写过有关于Android 插件方向的文章,解析了一下Android的插件原理与执行方式.非常多小伙伴都问我.为什么不把我制作的插件放到Github上,让大家共享一下. 我仅仅能说.大哥啊,这个插件是我在公司研发的时候制作的,商业机密.不能开源啊. 刚好.近期逛

使用TCP时序图解释BBR拥塞控制算法的几个细节

周六,由于要赶一个月底的Deadline,因此选择了在家VPN加班,大半夜就爬起来跑用例,抓数据...自然也就没有时间写文章和外出耍了...不过利用周日的午夜时间(不要问我为什么可以连续24小时不睡觉,因为我觉得吃饭睡觉是负担),我决定把工作上的事情先放下,还是要把每周至少一文补上,这已经成了习惯.由于上周实在太忙乱,所以自然根本没有更多的时间去思考一些"与工作无关且深入"的东西,我指的与工作无关并非意味着与IT,与互联网无关,只是意味着不是目前我在做的.比如在两年前,VPN,PKI这

LoadRunner函数大全之中文解释

LoadRunner函数大全之中文解释

《巨婴国》:差评。伪科学/非科学,逻辑比较差,以偏概全,解释牵强,竖起一个稻草人打得挺嗨。1星

读后感觉比较差.只能给1星.相当于负分的水平. 作者认为中国人大部分是没长大的婴儿,不能正确处理人际关系,隐含地推论常见的心理疾病.变态人格.不正常情商都是巨婴病的表现,明确地推论巨婴理论可以解释许多世界历史和国际政治上的事情. 差评理由有下面几个: 1:“巨婴国”的学说到底是不是一个严肃的学术上的推论?我认为不是.我认为可以归入伪科学或非科学的范畴.作者虽然是北大心理学系的本科和硕士毕业,但是全书是浓郁的江湖派的风格.作者提到了一个惊世骇俗的“巨婴学说”,并且断定中国人大部分是“巨婴”,因此中

进程与线程的一个简单解释

作者: 阮一峰 日期: 2013年4月24日 进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握. 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂. 1. 计算机的核心是CPU,它承担了所有的计算任务.它就像一座工厂,时刻在运行. 2. 假定工厂的电力有限,一次只能供给一个车间使用.也就是说,一个车间开工的时候,其他车间都必须停工.背后的含义就是,单个CPU一次只能运行一个任务. 3. 进程就好比工厂的车间,它代表CPU所能处理的