Silverlight4和Flex4打印功能在线PK

开发 后端
本文向大家介绍一下Silverlight4和Flex4打印功能大比拼,Silverlight作为一门新技术推出已经三年,许多曾经在Flex下支持的功能,现在Silverlight下已经可以实现。

本文和大家重点讨论一下Silverlight4和Flex4打印功能有什么区别和联系,许多曾经在Flex下支持的功能,现在Silverlight下已经可以实现,而且还有一些新的功能,Flex无法实现。

Silverlight4和Flex4打印功能大比拼

Silverlight作为一门新技术推出已经三年,在Silverlight早期版本,大家都认为Silverlight的功能无法和Flex进行对比,更是无法超越Flex,在2009年11月,微软推出了Silverlight4测试版本,以其强大的功能又一次吸引了众多开发人员的眼球,许多曾经在Flex下支持的功能,现在Silverlight下已经可以实现,而且还有一些新的功能,Flex无法实现。例如,Silverlight4的COM组件交互,从桌面拖拉对象到Silverlight应用等功能。为了使更多的开发人员了解Silverlight开发平台,我将对Silverlight4和Flex4进行一系列的对比,希望能帮助开发人员了解更多Silverlight新功能。本文,将对Silverlight4和Flex4的打印功能进行对比。

Silverlight4打印功能

  Silverlight4的打印功能石油PrintDocument类进行控制,实现打印功能需要按照以下步骤:

  步骤1:建立PrintDocument对象;

  步骤2:在PrintDocument对象中设置文档名;

  步骤3:添加事件句柄到PrintPage事件中,同时也可以添加到StartPrint和EndPrint事件中;

  步骤4:在PrintPage打印事件中,建立一个打印窗口,该窗口将作为父窗口出现,可以添加想打印的内容或者控件到该打印窗口。例如建立一个StackPanel,然后在StackPanel中添加想打印的内容控件;

  步骤5:在打印时,如果HasMorePages为True,说明支持多个页面进行打印;

  步骤6:重复4和5步骤,就可以实现完整的Silverlight4打印功能;

  看起来这些步骤是不是很简单。下面提供一个例程代码,点击打印按钮后,会打印出“HelloWorld”。

  1. usingSystem;  
  2.  
  3. usingSystem.Windows;  
  4. usingSystem.Windows.Controls;  
  5.  
  6. usingSystem.Windows.Printing;  
  7.  
  8. namespaceHelloPrinter  
  9.  
  10. {  
  11.  
  12. publicpartialclassMainPage:UserControl  
  13.  
  14. {  
  15.  
  16. publicMainPage()  
  17. {  
  18.  
  19. InitializeComponent();  
  20.  
  21. }  
  22. privatevoidbutton1_Click(objectsender,RoutedEventArgse)  
  23. {  
  24.  
  25. PrintDocumentprintDoc=newPrintDocument();  
  26.  
  27. printDoc.DocumentName="HelloWorldfromSilverlight";  
  28.  
  29. printDoc.PrintPage+=newEventHandler(printDoc_PrintPage);  
  30.  
  31. printDoc.Print();  
  32. }  
  33.  
  34. voidprintDoc_PrintPage(objectsender,PrintPageEventArgse)  
  35. {  
  36.  
  37. StackPanelpanel=newStackPanel(){OrientationOrientation=Orientation.Horizontal};  
  38.  
  39. panel.Children.Add(newTextBlock(){Text="Hello",  
  40.  
  41.   FontFamily=newSystem.Windows.Media.FontFamily("Arial"),FontSize=12});  
  42.  
  43. panel.Children.Add(newTextBlock(){Text="World",  
  44.  
  45.   FontFamily=newSystem.Windows.Media.FontFamily("Arial"),FontSize=12});  
  46.  
  47. e.PageVisual=panel;  
  48.  
  49. e.HasMorePages=false;  
  50.  
  51. }  
  52. }  
  53. }  
  54.  

  当点击按钮后,会调用打印事件句柄,在打印过程中,Silverlight将自动设置打印窗口的宽和高,可以通过PrintableArea属性获取在打印事件中获取打印页面的宽和高。#p#

Flex4打印功能

  Flex4的打印功能和Silverlight4打印功能步骤很相似,但是实现不同,Flex4的打印功能不是事件驱动,基本步骤如下:

  步骤1:建立FlexPrintJob对象,可以把该对象看作Silverlight的PrintDocument;

  步骤2:使用一个布尔变量控制要打印的图片格式,例如是打印矢量图还是打印位图;

  步骤3:调用FlexPrintJob中的Start()方法,这时会弹出提示窗口,询问是否开始打印,选择确定,将开始打印;

  步骤4:建立一个打印对象,并添加这个打印对象到现实列表中;

  步骤5:使用FlexPrintJob中的addObject()添加对象到打印页面中;

  步骤6:调用FlexPrintJob中的send()方法,对添加的打印页面进行打印;

  步骤7:打印后,删除已经打印的视图对象;

  下面提供按钮事件代码,点击按钮后,会打印出“HelloWorld”。

  1. protectedfunctionbutton1_clickHandler(event:MouseEvent):void  
  2.  
  3. {  
  4.  
  5. varjob:FlexPrintJob=newFlexPrintJob();  
  6.  
  7. job.printAsBitmap=false;  
  8.  
  9. if(job.start()){  
  10.  
  11. vargroup:HGroup=newHGroup();  
  12.  
  13. group.height=job.pageHeight;  
  14.  
  15. group.width=job.pageWidth;  
  16.  
  17. vartext:SimpleText=newSimpleText();  
  18.  
  19. text.text="Hello";  
  20.  
  21. text.setStyle("fontFamily","Arial");  
  22.  
  23. text.setStyle("fontSize",12);  
  24.  
  25. group.addElement(text);  
  26.  
  27. text=newSimpleText();  
  28.  
  29. text.setStyle("fontFamily","Arial");  
  30.  
  31. text.setStyle("fontSize",12);  
  32.  
  33. text.text="World";  
  34.  
  35. group.addElement(text);  
  36.  
  37. addElement(group);  
  38.  
  39. job.addObject(group,FlexPrintJobScaleType.NONE);  
  40.  
  41. job.send();  
  42.  
  43. removeElement(group);  
  44.  
  45. }  
  46.  

 
  对比上面的两组打印代码可以看出Flex实现打印需要多设置一些参数,主要是因为:

  1.在Flex打印中,需要设置打印格式,是位图模式,还是矢量图模式;

  2.Flex不支持自动设置打印对象在打印页面中的宽和高;

总结

综上所述,我们可以看出Flex的打印功能要比Silverlight的打印功能更加健全,Flex打印功能中的打印高质量的矢量图和自动分页是两个主要亮点,而当前Silverlight4中自动分页是将要打印视图对象切割成两部分实现打印。而Silverlight4中打印功能的全编程模式也是Silverlight的亮点。从微软对Silverlight的定位方向来看,相信在不久的将来,Silverlight的打印功能会更加的强大和完善。

【编辑推荐】

  1. Flex4教程中添加事件的3种方法
  2. 常用FlexBuilder快捷键用法指导
  3. Flex框架Riawave的定制应用
  4. 技术前沿 Flex2.0 从零开始实现文件上传
  5. FlexBuilder开发方法及特点解析 

 

  


 

责任编辑:佚名 来源: cnblogs.com
相关推荐

2010-08-11 11:10:08

Flex4打印功能

2010-08-06 10:56:11

Flex4MyEclipse

2010-08-02 11:09:45

Flex4

2010-08-13 09:05:09

Flex4Halo

2010-08-12 14:31:42

Flex4

2010-08-10 09:08:29

HTMLTemplatFlex4

2010-08-13 14:45:58

Flex4布局

2010-07-27 10:03:57

Flex4

2010-08-12 14:58:12

Flex4

2010-08-12 14:51:40

Flex4

2010-08-02 11:26:21

Flex4

2010-08-13 10:30:30

Flex4

2010-07-27 09:37:44

Flex

2009-07-16 14:09:24

Flex3到Flex4

2010-08-11 09:01:41

Flex4布局

2010-08-10 09:25:42

Flex4

2010-08-02 12:44:01

Flex3Flex4

2010-07-27 10:11:04

Flex4

2010-08-02 14:04:29

Flex4教程

2010-08-12 15:10:17

Flex4
点赞
收藏

51CTO技术栈公众号