snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1932回复:5

共享:打印机驱动中获取PointSize,我是这样实现的

楼主#
更多 发布于:2005-04-06 13:54
刚才有人在讨论PointSize的获取,原贴太长了,开新贴继续讨论

字体的大小一般是用磅表示,也就是PointSize的单位,1英寸=72磅,
Microsoft WORD 中指定字体的大小就是磅单位的

而在实际应用中通常使用逻辑点,即象素点.
象LOGFONT中lfHeight和lfWidth,
显示器上72磅的字在显示器上高度lfHeight是96个象素点,显示器分辨率96DPI
PointSize=72;
lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);


另外,驱动中一般不建议使用浮点数,
虽然象USERMODE_DRIVER模式的打印机驱动可以使用float和double,
而建议使用由长整型表示的浮点数,想FIX的28.4格式浮点数


在DrvTextOut中获取字体的大小我也是采用的FIX类型的浮点数


最新喜欢:

aqua_aquaaqua_a...
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-04-06 13:57
文件忘传上来了,呵呵
附件名称/大小 下载次数 最后更新
2005-04-06_drvTextout.cpp (2KB)  26
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
Pregunta
驱动牛犊
驱动牛犊
  • 注册日期2004-10-09
  • 最后登录2006-10-26
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-06 18:47
UP ! 学习...
多交流,多学习,共同提高。
tyoutyou
驱动牛犊
驱动牛犊
  • 注册日期2004-11-04
  • 最后登录2005-04-26
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-04-07 09:24
这样作也还没有完美,MulDiv的返回值是int
这意味着10.5和10是一样的大。。
另外很多软件包括word是可以自设大小的,虽然超过72会被自动当成图形处理,但是带小数的情况不是没有。
建议直接算pixel size 算了,这样误差最小,而且打印机直接接收。
tyoutyou
驱动牛犊
驱动牛犊
  • 注册日期2004-11-04
  • 最后登录2005-04-26
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-04-07 09:42
另外,十分感谢大佬的帮助,通过这些天的探讨,总算快完工了。上帝保佑不要再出bug...........
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-04-07 10:32
PS驱动里面大量使用了浮点数,
而驱动中它是按24.8格式的FIX浮点型进行运算的,
直接用double,flaot当然也是完全可以的了
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
游客

返回顶部