DFL Printting!

将打印的代码从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仍然使用像素单位,打印自己使用毫米单位。

 

  1. auto f5 = new   Font("仿宋_GB2312", 14.0F,FontStyle.BOLD,GraphicsUnit.MILLIMETER,GB2312_CHARSET,FontSmoothing.DEFAULT); //   
  2.         auto f6 = new   Font("隶书", 16.0F,FontStyle.BOLD,GraphicsUnit.MILLIMETER);   
  3.         auto f7 = new   Font("宋体", 18.0F,FontStyle.BOLD,GraphicsUnit.MILLIMETER);   
  4.         auto f8 = new   Font("华文新魏", 20.0F,FontStyle.BOLD,GraphicsUnit.MILLIMETER);   
  5.         auto f9 = new   Font("楷体_GB2312", 26.0F,FontStyle.BOLD,GraphicsUnit.MILLIMETER);   
  6.         Color co = Color(0, 0, 0);   
  7.         Graphics gc= pea.graphics;   
  8.         //prd: A4   
  9.         int x,y,w,h;   
  10.        
  11.     x = 12;   
  12.     y = 10;   
  13.     w = 230;   
  14.     h = cast(int)f5.getSize(GraphicsUnit.MILLIMETER);       
  15.         gc.drawText("Hello 中文"~f5.name(), f5, co, prd.mrTpr(Rect(x,y, w,h)) );    
  16.         y = y + h;   
  17.         h =  cast(int)f6.getSize(GraphicsUnit.MILLIMETER);         
  18.         gc.drawText("Hello 中文"~f6.name(), f6, co, prd.mrTpr(Rect(x,y, w,h)) );    
  19.         y = y + h;   
  20.         h =  cast(int)f7.getSize(GraphicsUnit.MILLIMETER);    
  21.         gc.drawText("Hello 中文"~f7.name(), f7, co, prd.mrTpr(Rect(x,y, w,h)) );    
  22.         y = y + h;   
  23.         h =  cast(int)f8.getSize(GraphicsUnit.MILLIMETER);    
  24.         gc.drawText("Hello 中文"~f8.name(), f8, co, prd.mrTpr(Rect(x,y, w,h)) );    
  25.         y = y + h;   
  26.         h = cast(int)f9.size();   
  27.         gc.drawText("Hello 中文"~f9.name(), f9, co, prd.mrTpr(Rect(x,y, w,h)) );    
  28.         pea.HasMorePages =false;   

 

 

你可能感兴趣的:(html,linux,windows,IE,qt)