Silverlight4和Flex4打印功能有什么区别和联系
这篇文章主要为大家展示了"Silverlight4和Flex4打印功能有什么区别和联系",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Silverlight4和Flex4打印功能有什么区别和联系"这篇文章吧。
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"。
usingSystem; usingSystem.Windows; usingSystem.Windows.Controls; usingSystem.Windows.Printing; namespaceHelloPrinter { publicpartialclassMainPage:UserControl { publicMainPage() { InitializeComponent(); } privatevoidbutton1_Click(objectsender,RoutedEventArgse) { PrintDocumentprintDoc=newPrintDocument(); printDoc.DocumentName="HelloWorldfromSilverlight"; printDoc.PrintPage+=newEventHandler(printDoc_PrintPage); printDoc.Print(); } voidprintDoc_PrintPage(objectsender,PrintPageEventArgse) { StackPanelpanel=newStackPanel(){OrientationOrientation=Orientation.Horizontal}; panel.Children.Add(newTextBlock(){Text="Hello", FontFamily=newSystem.Windows.Media.FontFamily("Arial"),FontSize=12}); panel.Children.Add(newTextBlock(){Text="World", FontFamily=newSystem.Windows.Media.FontFamily("Arial"),FontSize=12}); e.PageVisual=panel; e.HasMorePages=false; } } }
当点击按钮后,会调用打印事件句柄,在打印过程中,Silverlight将自动设置打印窗口的宽和高,可以通过PrintableArea属性获取在打印事件中获取打印页面的宽和高。
Flex4打印功能
Flex4的打印功能和Silverlight4打印功能步骤很相似,但是实现不同,Flex4的打印功能不是事件驱动,基本步骤如下:
步骤1:建立FlexPrintJob对象,可以把该对象看作Silverlight的PrintDocument;
步骤2:使用一个布尔变量控制要打印的图片格式,例如是打印矢量图还是打印位图;
步骤3:调用FlexPrintJob中的Start()方法,这时会弹出提示窗口,询问是否开始打印,选择确定,将开始打印;
步骤4:建立一个打印对象,并添加这个打印对象到现实列表中;
步骤5:使用FlexPrintJob中的addObject()添加对象到打印页面中;
步骤6:调用FlexPrintJob中的send()方法,对添加的打印页面进行打印;
步骤7:打印后,删除已经打印的视图对象;
下面提供按钮事件代码,点击按钮后,会打印出"HelloWorld"。
protectedfunctionbutton1_clickHandler(event:MouseEvent):void { varjob:FlexPrintJob=newFlexPrintJob(); job.printAsBitmap=false; if(job.start()){ vargroup:HGroup=newHGroup(); group.height=job.pageHeight; group.width=job.pageWidth; vartext:SimpleText=newSimpleText(); text.text="Hello"; text.setStyle("fontFamily","Arial"); text.setStyle("fontSize",12); group.addElement(text); text=newSimpleText(); text.setStyle("fontFamily","Arial"); text.setStyle("fontSize",12); text.text="World"; group.addElement(text); addElement(group); job.addObject(group,FlexPrintJobScaleType.NONE); job.send(); removeElement(group); }
对比上面的两组打印代码可以看出Flex实现打印需要多设置一些参数,主要是因为:
1.在Flex打印中,需要设置打印格式,是位图模式,还是矢量图模式;
2.Flex不支持自动设置打印对象在打印页面中的宽和高;
以上是"Silverlight4和Flex4打印功能有什么区别和联系"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!