将打印的代码从DWT,添加到DFL中,从而让DFL拥有打印的功能.
http://wiki.dprogramming.com/Dfl/Printting
DWT的打印写的一般,我添加的就更一般, 以后继续封装,先提供一个可以使用的版本.
1.PrintDocument 封装了打印机和打印文档,提供打印事件,供打印调用.
2.PrintDialog 打印对话框
3.PrintSetting 打印机设置
4.PrintEventArgs 在打印事件中调用的参数,包含执行具体打印的Graphics.
NEXT: 提供PrintPreview,PageSetting.
使用方法(Test on DMD1.020,XPsp2):
1.下载安装DFL http://www.dprogramming.com/dfl.php
2.将打印模块释放到DFL的目录下,覆盖原有的文件(winapi.d,all.d,makelib.bat),重新编译.
3.用examples目录下的Print.d测试.
又修改了,
1.让DFL支持中文字体了! 修改了不支持unicode的windows函数。
2.添加了转换函数:GDI仍然使用像素单位,打印自己使用毫米单位。
- auto f5 = new Font("仿宋_GB2312", 14.0F,FontStyle.BOLD,GraphicsUnit.MILLIMETER,GB2312_CHARSET,FontSmoothing.DEFAULT); //
- auto f6 = new Font("隶书", 16.0F,FontStyle.BOLD,GraphicsUnit.MILLIMETER);
- auto f7 = new Font("宋体", 18.0F,FontStyle.BOLD,GraphicsUnit.MILLIMETER);
- auto f8 = new Font("华文新魏", 20.0F,FontStyle.BOLD,GraphicsUnit.MILLIMETER);
- auto f9 = new Font("楷体_GB2312", 26.0F,FontStyle.BOLD,GraphicsUnit.MILLIMETER);
- Color co = Color(0, 0, 0);
- Graphics gc= pea.graphics;
- //prd: A4
- int x,y,w,h;
- x = 12;
- y = 10;
- w = 230;
- h = cast(int)f5.getSize(GraphicsUnit.MILLIMETER);
- gc.drawText("Hello 中文"~f5.name(), f5, co, prd.mrTpr(Rect(x,y, w,h)) );
- y = y + h;
- h = cast(int)f6.getSize(GraphicsUnit.MILLIMETER);
- gc.drawText("Hello 中文"~f6.name(), f6, co, prd.mrTpr(Rect(x,y, w,h)) );
- y = y + h;
- h = cast(int)f7.getSize(GraphicsUnit.MILLIMETER);
- gc.drawText("Hello 中文"~f7.name(), f7, co, prd.mrTpr(Rect(x,y, w,h)) );
- y = y + h;
- h = cast(int)f8.getSize(GraphicsUnit.MILLIMETER);
- gc.drawText("Hello 中文"~f8.name(), f8, co, prd.mrTpr(Rect(x,y, w,h)) );
- y = y + h;
- h = cast(int)f9.size();
- gc.drawText("Hello 中文"~f9.name(), f9, co, prd.mrTpr(Rect(x,y, w,h)) );
- pea.HasMorePages =false;