问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++如何调用指定目录下的TTF字体文件

发布网友 发布时间:2022-04-25 12:48

我来回答

1个回答

热心网友 时间:2023-05-18 19:00

1.在MFC下,可以使用CreateFont创建并加载字体。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,BYTE nPitchAndFamily,LPCTSTR lpszFacename);通过指定的一些特征初始化CFont对象。下面分别介绍每个参数:nHeight:指定字体高度(逻辑单位)。有三种取值:>0,字体映射器将高度值转换为设备单位,并与可用字体的字符元高度进行匹配;=0,字体映射器使用默认的高度值;<0,字体映射器将高度值转换为设备单位,用其绝对值与可用字体的字符高度进行匹配。nHeight转换后的绝对值不应超过16384个设备单位。nWidth:指定字体中字符的平均宽度(逻辑单位)。nEscapement:指定偏离垂线和显示界面X轴之间的角度,以十分之一度为单位。偏离垂线是穿过一行文本中第一个字符和最后一个字符的直线。nOrientation:指定每个字符的基线和设备X轴之间的角度,以十分之一度为单位。nWeight:指定字体磅数(每1000点中墨点像素数)。可取0到1000之间的任意整数值。bItalic:指定字体是否为斜体。bUnderline:指定字体是否带有下划线。bStrikeOut:指定字体是否带有删除线。nCharSet:指定字体的字符集。预定义的字符集: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。应用程序可以使用DEFAULT_CHARSET以允许字体名和大小完全指定逻辑字体,如果指定的字体名不存在则可能会用任意字符集的字体来代替,所以为避免不可预料的结果,应谨慎使用DEFAULT_CHARSET。nOutPrecision:指定输出精度。输出精度定义了输出与要求的字体高度、宽度、字符方向、移位和间距等的接近程度。它的取值及含义如下(只能取其一):OUT_CHARACTER_PRECIS;未用。OUT_DEFAULT_PRECIS:指定缺省的字体映射器状态。OUT_DEVICE_PRECIS:在当系统里有多种字体使用同一个名字时指示字体映射器选择一种设备字体。OUT_OUTLINE_PRCIS:在Windows NT中此值指示字体映射器从TrueType和其他基于边框的字体中选择。OUT_RASTER_PRECIS:在当系统里有多种字体使用同一个名字时指示字体映射器选择一种光栅字体。OUT_STRING_PRECIS:此值没有被字体映射器使用,但是当列举光栅字体时它会被返回。OUT_STROKE_PRECIS:没有被字体映射器使用,但是当列举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字体换一个名字)。nClipPrecision:指定裁剪精度。裁剪精度定义了怎样裁剪部分超出裁剪区域的字符。它的取值及含义如下(可取一个或多个值):CLIP_DEFAULT_PRECIS:指定缺省裁剪状态。CLIP_CHARACTER_PRECIS:未用。CLIP_STROKE_PRECIS:未被字体映射器使用,但是当列举光栅字体、向量字体或TrueType字体时它会被返回。在Windows环境下,为保证兼容性,当列举字体时这个值总被返回。CLIP_MASK:未用。CLIP_EMBEDDED:要使用嵌入式只读字体必须使用此标志。CLIP_LH_ANGLES:当此值被使用时,所有字体的旋转依赖于坐标系统的定位是朝左的还是朝右的。如果未使用此值,设备字体总是逆时针方向旋转,但其他字体的旋转依赖于坐标系统的定向。CLIP_TT_ALWAYS:未用。nQuality:指定字体的输出质量。输出质量定义了GDI将逻辑字体属性匹配到实际物理字体的细致程度。它的各个取值及含义如下(取其一):DEFAULT_QUALITY:字体的外观不重要。DRAFT_QUALITY:字体外观的重要性次于使用PROOF_QUALITY时,对GDI光栅字体,缩放比例是活动的,这意味着多种字体大小可供选择,但质量可能不高,如果有必要,粗体、斜体、下划线、strikeout字体可被综合起来使用。PROOF_QUALITY:字符质量比精确匹配逻辑字体字体属性更重要。对GDI扫描字体,缩放比例是活动的,并选择最接近的大小。尽管当使用PROOF_QUALITY时,选择字体大小并不完全匹配,但字体的质量很高,并没有外观上的变形。如果有必要,粗体、斜体、下划线、strikeout字体可被综合起来使用。nPitchAndFamily:指定字体间距和字体族。低2位用来指定字体的间距,可取下列值中的一个:DEFAULT_PITCH,FIXED_PITCH,VARIABLE_PITCH。高4位指定字体族,取值及含义如下(取其一):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将字符间距和字体族组合起来给nPitchAndFamily赋值。字体族描述一种字体的普通外观,当所有的精确字样都不能使用时,可用它们来指定字体。lpszFacename:指定字体的字样名的字符串。此字符串的长度不应超过30个字符。Windows函数EnumFontFamilies可以枚举出当前所有可用字体的字样名。如果lpszFacename为NULL,则GDI使用一种与设备无关的字体。返回值:此函数成功则返回TRUE,否则返回FALSE。CreateFont函数初始化CFont对象后,此字体就能够被选作任何设备上下文的字体了。此函数并不会创建一个新的Windows GDI字体,只是从GDI的物理字体中选择了一个最匹配的字体。在创建一个逻辑字体时,大部分参数可以使用默认值,但一般情况下都会给出参数nHeight和lpszFacename的指定值,如果没有给nHeight和lpszFacename参数设定取值,则创建的逻辑字体与设备相关。当使用CreateFont函数初始化一个CFont对象完成后,就能够使用CDC::SelectObject函数来为设备上下文选择字体了,并且还能够在不再使用此CFont对象时删除它。2.例子:

//下面的代码演示了如何实现字体的空心效果//应用程序主窗口的重绘函数void CMyWnd::OnPaint(){ // 获得窗口的客户区设备上下文句柄 CPaintDC dc(this); // 更改当前字体 LOGFONT lf; dc.GetCurrentFont()- >GetLogFont(&lf); CFont font; CFont *pOldFont; // 保存设备上下文最初使用的字体对象 lf.lfCharSet=134; lf.lfHeight=-150; lf.lfHeight=-150; lf.lfWidth=0; strcpy(lf.lfFaceName, "隶书"); font.CreateFontIndirect( &lf); pOldFont=dc.SelectObject( &font); dc.SetBkMode(TRANSPARENT); // 更改当前画笔 CPen pen(PS_SOLID, 1, RGB(255, 0, 0)); CPen *pOldPen; pOldPen=dc.SelectObject( &pen); // 开始一个路径 dc.BeginPath(); dc.TextOut(10, 10, "空心字"); dc.EndPath(); // 绘制路径 dc.StrokePath(); //可以用dc.StrokeAndFillPath()函数来代替,不过该函数会使用当前刷子填充路径的内部。 dc.SelectObject(pOldFont); dc.SelectObject(pOldPen);}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
倩碧黄油适合哪种肤质的人使用? 倩碧有哪些护肤品比较受女性青睐? 倩碧紧致面霜适合哪些肤质的人使用? 倩碧护肤品适合什么肤质使用? 哪些肤质的人适合使用倩碧卓越润肤乳? 学校发的移动卡,套餐38的送一年宽带 现在卡不想用了,貌似宽带合约没到期... ...我居住浙江,有一个广西的移动卡,移动卡上还捆绑有宽带 我现在在外地我想注销移动卡或者联通卡怎么注销,回不到办卡的地方。 上海最建议去三个景点 为什么叫北京鸭篮球 谁能介绍一下TTF字体? 【像素字体】这张图片最上面的白色署名用的是什么字体?我非常想知道... 在淘宝上开了家新店,有没有快速出单的方法 淘宝新店怎么快速打开销路 淘宝新店,怎么样快速引流量? 怎么找淘宝新店啊 在淘宝卖东西要怎样才能让别人更快的找到自己的店铺? 淘宝新店如何快速出单?运营推广 淘宝新开店铺如何才有客源,在哪里找合适的货源? 淘宝新店如何快速破零? 修电动工具和修车哪个好 维修电动车需要什么工具扳子需要多大的?还需要什么工具啊,谢谢^ω^... 电动车维修工具(全套)--急 开电动车维修店都需要哪些工具仪表 修电瓶车剥轮胎有什么好的工具 修电动车工具多少钱 修电动车锂电池都要些什么工具和仪器? 修理电动车的全套维修工具得多少钱 电动车维修需要什么工具哪买,价廉耐用的? 开电动车修理店要准备哪些工具? 求点阵清晰ttf字库 龙豆,豆角是怎么种的 龙豆是什么豆 长的很像豆角,但是有四条突出来的边,还带齿状,旁边的是拨出来的里面的... 龙豆,蛇豆,豆角有什么区别 短豆角就是龙豆是转基因的吗 龙豆是哪里产的 龙豆如何存放 证书:qualification、certification、certificate有什么不同?_百度知 ... CERTIFICATION 和 certificate 的区别 certificate和certification的区别 certification是什么意思 certificate和certification区别是什么? 李现和12厘米有什么关系? 李现十二厘米是什么意思? 李现女友疑曝光 李现12厘米事件什么梗? 李现12厘米什么意思?为什么叫现婊? c4dtoa切换到gpu就崩溃 李现有怎样的黑历史? Win10系统用GPU打开游戏无辜崩溃,过一会系统蓝屏