2010-05-10 38 views
3

我有一些自定义图形和一些图表的Silverlight 3.0应用程序。我需要找到将这些图形传输到PowerPoint演示文稿的最佳方法。如何将图表从Silverlight应用程序复制到剪贴板?

我读过Silverlight 4.0提供了一个剪贴板API,但只支持Unicode文本,而不是图像。

有没有办法实现这个任务,而不强迫用户手动PrtSc并粘贴到其他应用程序?

回答

2

在SL3中没有简单的方法来做到这一点。我的建议是使用WriteableBitmap并将其保存到IsolatedStorage,然后用FileSave对话框提示用户保存到他们的盒子(然后他们将必须将其放入PowerPoint中)。 SL3中的对话框唯一的问题是它不允许你设置扩展类型,所以他们需要输入PNG或JPG扩展。这和PrtSc,Ctrl + P需要多步用户操作,并且始终是一个失败点。

在SL4中有更多的选择 - 你甚至不需要SLOOB中的剪贴板。您可以使用AutomationFactory自动化PowerPoint。

+0

引述我会读到AutomationFactory,我didn't知道这一点。SL3不要求,因为我可以升级到SL4容易......但与S100b是不是选项! – zidane 2010-05-13 10:14:08

+0

@zidane:是的,也搜索“ComAutomationFactory” - 这就是它的名字是当SL4处于测试阶段时,似乎有更多的AutomationFactory的东西写的然后说。它确实需要SLOOB因为Elavated Privilages(并且只能在Windows上运行),但可能值得考虑SLOOB - 用逗号提示用户,“在这个应用和PowerPoint之间工作得更快。在桌面上安装所有的好东西!“:) – 2010-05-14 00:17:47

1

如果真= HtmlPage.IsPopupWindowAllowed然后
HtmlPage.PopupWindow(新的URI( “http://www.yourdomain.com/chartgenerator.ashx?param1=value1&param2=value2”), “新的”,选项)
结束如果

chartgenerator.aspx可以显示图像:

“告诉浏览器显示嵌入式

context.Response.AddHeader( ”内容处置“, ”内联;文件名=“ & FilenameWithExt)

或显示打开,保存,取消对话框:

'告诉浏览器保存的,而不是显示内嵌

context.Response.AddHeader(‘内容处置’,“附件;文件名=” & FilenameWithExt)

http://vbcity.com/blogs/mike-mcintyre/archive/2010/02/28/silverlight-3-pop-up-new-browser-window.aspx