`
ideage
  • 浏览: 326111 次
社区版块
存档分类
最新评论

D语言打印forDFL

阅读更多
   感谢Chris发布了DFL ,使用后发现没有打印功能,遗憾之后,不敢奢望,只好自己干。而在第一个版本的DFL Printting后,终于有时间,完成了第二个版本。每天匆匆编程,完成了不敢自专,抽空写出文档,功能太少,目标也太小 ,欢迎大家指正。

本次版本,主要亮点:
1.把所以的代码集中到一个文件,包含测试,直接可以运行,0配置!
2.提供了打印预览的窗口,当然,还在测试中。
3.提供了打印对话框
4.打印纸张设置,Win9x没有测试。
5.使用可以类似于DWT的打印,也可以类似于dotNET里面C#的打印。

   打印要了解的东西太多了,但看大师信手拈来,随意挥洒,就成就了打印的机制.看《Windows程序设计》,对打印描述也很简单。看了些代码,也修改了一个DWT的使用,但总觉得不了解机制不行,不了解底层不好。所以决心在以前修改的基础上,再抽丝剥茧,去粗取精,就有了现在的DFL Printting。

一.GDI的打印原理:GDI打印很容易,过程
1.取得打印机DC
2.使用StartDoc,启动打印文档。
3.循环使用StartPage,EndPage,在中间使用GDI函数画出打印页面。
4.使用EndDoc,结束文档。

说的都很简单,用的时候却不容易。

二.DFL的GDI封装
1.DFL GDI封装在drawing命名空间。封装了Graphics,字体,颜色,刷子,画笔,位图等。
Graphics封装了多数的绘图函数,使用简单,在Form中可以通过OnPaint中取得桌面的Graphics,直接在窗口进行绘图。
2.打印主要要用到Graphics,字体,画笔。
3.打印预览要用到位图,位图的复制,DFL封装了一个MemoryGraphics,可以完成这个工作。

三.DFL Printting封装
1.打印设置 PrintSetting
目前提供了打印的页码范围,打印的纸张大小,副本,但目前都没有使用。
2.打印对话框 PrintDialog 继承于通用对话框。
3.打印机 封装了Win32打印API,提供了纸张设置函数。
4.打印文档 PrintDocument,提供打印文档功能。只要继承或者实例化一个打印文档,在打印文档的printPage事件中调用Graphics的函数,进行绘图,实现打印。
5.打印文档也提供了printpreView,进行打印预览。


下一步:
1.完善打印设置:在打印设置后,在打印文档中,根据设置进行打印。
2.更多测试。



致谢
Walter Bright,D Program Language
Chris,www.dprogramming.com/dfl.php
Stewart Gordon,Win32 Binding
Charles Pelzold 《Windows程序设计》


代码测试后发布了!
缩放还有问题.本来用Picture,发现预览无论如何也不行.只好直接绘图预览了.
分享到:
评论
5 楼 betty_betty2008 2009-12-09  
DFL 现在是 ROBERT 在维护,老大有无意向发给他看能不能加进去?他的邮件是:
sandford@jhu.edu
4 楼 ideage 2008-12-19  
在高分辨率下的单色打印机,打印不清晰的原因:字体要设置为黑色(RGB(0,0,0))。其他颜色按灰度输出,造成有很多点点构成的打印线条。
3 楼 ideage 2008-12-13  
谢谢大家支持,
发现了一堆错误!打印OK,预览还有点小问题!努力!!
2 楼 hqs7636 2008-12-11  
赞一个,

楼上的太可爱了,恨不得想亲你一口
1 楼 betty_betty2008 2008-12-11  
牛人+好人,赞一个先!!D语言需要这样的人(才),愿意为其他人的花时间。不象俺曾在一大步里面问一个问题,分斑主直接一句“上网搜一下”或“Debug" 一下

相关推荐

Global site tag (gtag.js) - Google Analytics