说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

如何在WINDOWS中控制打印字体的长宽,而不受限于SIZE 的限制-Delphi资料

HTML文档下载 WORD文档下载 PDF文档下载
如何在WINDOWS中控制打印字体的长宽,而不受限于SIZE 的限制-Delphi资料

首先为了达到这个功能,可以采用Windows的逻辑字体(LogFont)

可以使用 CreateFont 或 CreateFontIndirect 这两个Windows API

函数来定义任何想要的字体,由于 CreateFont 所需的参数甚多通常

我们使用 CreateFontIndirect 来建立所需的逻辑字体,这个API函数

在Delphi中的声明为

function CreateFontIndirect(const p1: TLogFont): HFONT; stdcall;

其中只有一个参数 p1: TLogfont

所有有关字体的参数完全通过这个

TLogfont结构来传送,Windows将根据结构中的内容创建出相应的逻辑

字体,在Delphi的Windows.pas中TLogFont是这样定义的

TLogFontA = packed record

lfHeight: Longint;

lfWidth: Longint;

lfEscapement: Longint;

lfOrientation: Longint;

lfWeight: Longint;

lfItalic: Byte;

lfUnderline: Byte;

lfStrikeOut: Byte;

lfCharSet: Byte;

lfOutPrecision: Byte;

lfClipPrecision: Byte;

lfQuality: Byte;

lfPitchAndFamily: Byte;

lfFaceName: array[0..LF_FACESIZE - 1] of AnsiChar;

end;

TLogFontW = packed record

lfHeight: Longint;

lfWidth: Longint;

lfEscapement: Longint;

lfOrientation: Longint;

lfWeight: Longint;

lfItalic: Byte;

lfUnderline: Byte;

lfStrikeOut: Byte;

lfCharSet: Byte;

lfOutPrecision: Byte;

lfClipPrecision: Byte;

lfQuality: Byte;

lfPitchAndFamily: Byte;

lfFaceName: array[0..LF_FACESIZE - 1] of WideChar;

end;

TLogFont = TLogFontA;

其中涉及到很多参数,其中

lfHeight: Longint;

指定以逻辑单位标定的字体高度,取值可为正负或零,对于需要随意

定义字体高度的情况下通常取负值,以保证获得实际尺寸的字体。

lfWidth: Longint;

用于指定字体的平均宽度,由于Windows系统下的大多数字体都是比例

字体因而采用平均宽度这个表示方法。若指定为0,则系统会自动根据

适当的比例自动处理宽度。

lfEscapement: Longint;

指定输出方向与当前坐标系X轴之间的以十分之一度为单位的角度。

lfOrientation: Longint;

指定每个字符与当前坐标系X轴之间的以十分之一度为单位的角度。在

Windows95中这个值等同于lfEscpement。

lfWeight: Longint;

指定范围为从0至1000的字体加重程度,400是标准字体700为加重字体,

0表示采用默认值。

lfItalic: Byte;

不为0表示采用斜体字。

lfUnderline: Byte;

不为0表示带下划线。

lfStrikeOut: Byte;

不为0表示带穿透线。

lfCharSet: Byte;

指定字体集。

lfOutPrecision: Byte;

指定输出精度。用于确定对前面一些设定值的精确程度。

lfClipPrecision: Byte;

指定裁剪精度。裁剪是Windows图形环境下的一种特殊处理,简单说就是

去掉图形中落在视图以外的部分,有助于提高图形的处理速度。

lfQuality: Byte;

指定输出质量。

lfPitchAndFamily: Byte;

指定字体的Pitch和Family。

lfFaceName: array[0..LF_FACESIZE - 1] of AnsiChar;

指定采用的字体名称。

在建立逻辑字体时,我们通常使用

lfHeight和lfWidth来确定字体的尺寸,使用lfEscapement和lfOrientation

来确定字体的输出方向,使用lfWeight

lfItalic

lfUnderline

lfStrikeOut

来确定字体的加重,斜体,下划线和穿透线,使用lfCharSet

来确定字体的字符集,通常采用系统默认的字符集。

对于lfOutPrecision

lfClipPrecision

lfQuality一般应用于对屏幕之外

的输出设备,通常采用默认值。采用lfPitchAndFamily来确定采用定宽或可

变字体和字体的家族。以lfFaceName来通过名称选择采用的字体。

另外应当注意在Windows环境下,每种字体具体输出为何种形式取决于很多

因素,需要对以上这些参数进行有效的组合才能达到所要的效果。

《近匠》英特尔&#174; XDK:从开发、测试到部署,一站式HTML5开发工具 手游云测工具TestBird:测试走入垂直细分领域 阿里巴巴赴美IPO的种种及马云内部邮件全文 盘点EMC World 2014三大看点 2014年Q1:智能手机总销量下滑,WP同比反增119% 着眼无人驾驶技术 英特尔投资日本ZMP公司 移动云服务UCloud快速扩张 成立北京分公司 精准推送 个推推出2.0产品“Smart Push” 从张小龙的七大价值观说开去 2014高德LBS应用大赛正式启动 助力打造生态圈 专访永洪科技CEO何春涛:管理者的炼成及国内大数据公司的挑战 R语言如何发展?商业支持或许可行 专访InMobi CEO Naveen Tewari:Banner广告已经OUT 效力苹果18年的资深高管Katie Cotton将退休 主打“全、新、独、准”,华为推出游戏中心平台 阿里云计算出海挑战亚马逊 首站香港及东南亚 TIOBE 2014年5月编程语言排行榜:Adobe ActionScript挤进Top20 秒杀iPad Mini?微软或将下月发布Surface Mini 大道手游:详解应用内购买的定价趋势与技巧 与英特尔软硬合作,Cloudera将在中国建立业务机构 准备迎接第一个量子计算软件公司吧! 搜狗搜索发布新LOGO和移动App 正全面入驻腾讯各条产品线 做好扁平化设计-视觉篇 关于敏捷研发的跨界反思 《近匠》雨血,一个“独立游戏人”的反思 一周消息树: 阿里巴巴赴美IPO的种种及马云内部邮件全文 一周热点:准备迎接第一个量子计算软件公司吧! 【云先锋】多备份:云端数据物流平台为企业提供云备份服务 不容错过!开发者必备的十二大开发资源 为Canvas而生:开源2D HTML5渲染引擎CutJS 第九届中国互联网创业者大会在京举办 腾讯发布“三驾马车”组合拳产品 熟悉J2EE和Web,但是英语四级没过,郁闷呀!散分讨论 怎样使用一个窗体总是显示在最后面和怎样在windows桌面上写上文字。 如果全世界只有一个男人... .net组件有没有对象池的功能? 编程男友和淘气女友!绝配!!!! 企业管理器很慢? 关于窗体的问题 我明年打算考中程,到底难吗? 网络编程 为什么我的mdb数据库不能设置对象指针可以移动啊? 急啊!!!有没有做过论坛发帖机啊能否帮我一下就是怎样提交CSDN论坛的注册信息然后得到左边的树列表和右边的列表 本人做系统时有一个操作员列表,为使每个操作员的密码保密,想在数据表据中将密码用*号代替,怎么办? 怎么檢測一個線程是否已經創建? 解密软件,哪里找 美萍VOD是怎么实现不用网络共享而完成点播的呢? com入门问题2 jb8+Weblogic配置后,在jb8中不能编译jsp文件,但java文件可以编译 哪里有好的控件下载,介绍几个好的网站!!! 一个很久没有解决的问题,请各位指教。 高分求救程序 我装RASPPP软件的时候,他要我的数字签名怎么办? javaBean 是否能在应用程序里面调用??怎么调用?? 企业管理器很慢? 100分求解,急!请大家帮忙 请教:新建论坛在客户机上能访问,在服务器上却报“Microsoft VBScript 编译器错误 错误 '800a03f6'” 怎么把别人的代码窗体文件,加到自己的工程里? 权限问题 怎么用一控件去调用另一控件? 请教~~~~ Struts中的事件 如何在点击鼠标左键的时候,弹出一个弹出菜单? 求JBuilder8的下载地址,下完给分! Help!各位大俠,關于SQL查詢專業性的問題.....多多指教,在線送分! 两个菜鸟问题 急!急!急! 能不能用Socket类来实现广播,怎么实现发送和接收 为什么在98系统下Ado控件就不能用了,在线等! 关于在c++ builder中定义的类的编译时的问题 关于网络的简单问题 real media 插件哪里有急!! Tomcat连接池 请问一下哪里有Lotus5.11的下载啊! 怎樣使CrystalReportViewer里選擇打印機後可以預覽(200分) 怎么在一个控件中去调用另一个控件 小弟公司的项目用vss管理,请大家给小弟一个vss电子书好吗,大送分啊~~~~谢谢! MM求教各位 寻<<the c++ programming language>>中文电子版 请问各位,本人有C/C++的基础,学习C++ Builder 好学吗 请教关于Date 的一个问题 我在前台管理记录的时候误删除了几条记录,怎么样才能找回来 我在数据库里的记录是这样的,“ test",每行的前面有若干空格,为什么在网页上显示时,把我前面的空格给去掉了 Execute什么意思 甘肃省有个地方叫yu mu guan的吗? 寻书:Broken bones :anthropological analysis of blunt force trauma书名:Broken bones :anthropological analysis of blunt force trauma It is no good for us ____(worry) about your gardens.怎样填 Oh,( ) (not to) worry about it. 抛物线y=-((x^2)/2)与过点M(0,-1)的直线l交于A,B两点,O为原点,若OA和OB的斜率之和为1,求直线l的方程. 点A,B的坐标分别是(-1,0),(1,0),直线AM,BM相交于点M,且直线AM的斜率与直线BM的斜率的商是2,点M的轨迹是什么? 野马GT500上的那个眼睛蛇标志是什么意思? 英语改错 I just need a person really understand me. you call your sister but she is away on a business trip.Her husband answers.Leave a message.,编一个英语对话 ,急 唔该晒啦 1.in hot summer you should take an umbrella with you to protect yourself () the strong sunshine.2."do you remember what else you need to pay attention __ besides this " the teacher asked.3.when he saw his lost son coming back,he smiled ___ relief. 浙江推广餐馆厨房阳光化 从洗菜到上菜日本自卫队下月将出动逾3万人 演练登杭州有小区物业费每月每平方米涨了两分澳洲林火因澳部队实弹演习引发 强风致奶粉进药店多问题待解 本周开始安装售宁波海曙区已有五个社区无主车“清零”美耶鲁大学19岁大二学生欲徒步闯南极墨西哥一家美国公司糖果厂爆炸20人失美国海军基地再发枪击案 2人受伤枪手美国义诊团感受中国医疗现状 吁加强健环球小姐决赛即将举行 佳丽泳装展示傲国企混改迎政策“春风” 军工等领域将李铁:赵和靖对郜林犯规太恶劣 名嘴:考非全日制研究生难了!部分高校考研调13张黄牌2张红牌不冤枉 京粤大战最拥有最厚家底却不轮换 恒大被拖垮许家独造4球!中超第一巨星只能是他,恒大索马里旱灾致饥荒 两天饿死110人深圳冷空气马上杀到!阴阴雨雨的天气又非农超级周闪亮登场 本周关注七件事蝶彩资管“精准押宝”西藏旅游 上交所ST概念强势上涨 扭亏ST股业绩与股我在三国打直播圣墟无限之浴血杀戮意甲中国豪门超时空之城炼金之刃位面无限重生大明逍遥行宗师巨星利斧暴君山舞龙蛇蛤蟆石旅游一线天旅游三天门旅游安福路旅游连理松旅游南沙海滨广场旅游四川美院旅游里沙旅游中信明思克航母(已关闭)旅游中英街旅游小梅沙旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘