2007-08-28

DFL Printting!

关键字: print, printdialog

将打印的代码从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;   

 

 

  • dfl-20070907.zip (485.3 KB)
  • 描述: dfl-20070907,Unicode DFL 包含Printting
  • 下载次数: 25
  • dflprinting.zip (282 KB)
  • 描述: 20080303,DMD1.027,xp,dfl0.97
  • 下载次数: 2
评论
ideage 2007-09-07
DFL Printting更新了,包含了DFL,解压就可以使用OK!
ideage 2007-08-29
harmonia的确很不错,代码结构一流.在作者的map没有print,有空把打印也抄过去.

DFL主要是自己用.XML方言不错,但对于现在的程序,还是不普及吧.而且,开发一个小程序,用那么多XUL,XAML,累啊.
sofire 2007-08-29
只会写简单的QT版 HelloWorld。
前段时间,看过几天,就再没有深入了。
实在是讨厌C++的申明、实现分开的方式。
要是QT转行用D语言开发,我马上去学它。
:)
oldrev 2007-08-29
描述界面可以用一个XML的方言来实现,Mozilla 的 XUL,MS 的 XAML 都是如此。

DFL的网站上似乎说作者在搞GTK的DFL,不过我看不大能成,DFL完全就是为Windows设计的。

GTK和QT我很不喜欢,界面是自己画的,比起 wx 的 native look & feel 要差一些,最好是有交集的控件就用本地的,没有再自画。

看来还是得要用D开发一个OS才顺眼
DavidL 2007-08-28
嗯,不错,有没有人研究QT,虽然调用WINE是一个方法,不过总感觉似乎没有一个本地的实现好,我们这个圈子如果有人熟X的话搞个DFL linux版应该很不错
之前很喜欢harmonia的。以前大致想利用harmonia做浏览器。不过现在我发现其实HTML是个错误的选择。一个不完整的HTML文档(HTML传输过程中)的动态渲染实际上很容易变得buggy,HTML的架构根本不适合做这个事,HTML的描述是静态的并且时期望完整的描述,一个不对称的标签就可以引起很多乱七八糟的问题,前一段时间,一个CSS设置就让IE崩溃了。。把HTML融合到GUI的确有待商榷。或许有一天人们淘汰HTML了呢。
发表评论

您还没有登录,请登录后发表评论

ideage
搜索本博客
最近加入圈子
存档
最新评论