如何从Silverlight应用程序中复制图表的图像到剪贴板?

3

我有一个使用了定制图形和图表的Silverlight 3.0应用程序。我需要找到将这些图形转移到PowerPoint演示文稿的最佳方法。

我读到,Silverlight 4.0提供了剪贴板API,但仅支持Unicode文本,不支持图像。

是否有一种方法可以在不强制用户手动PrtSc并粘贴到其他应用程序的情况下完成此任务?

2个回答

2
在SL3中没有简单的方法来实现这个。我的建议是使用WriteableBitmap并将其保存到IsolatedStorage,然后提示用户使用FileSave对话框保存到他们的框中(然后他们需要将其放入PowerPoint中)。唯一的问题是在SL3中,该对话框不允许您设置扩展名类型,因此他们需要输入PNG或JPG扩展名。这和PrtScCtrl+P都需要多步用户操作,这总是一个失败点。

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


我会阅读关于AutomationFactory的内容,我之前不知道这个。SL3不是必需的,因为我可以轻松升级到SL4...但SLOOB不是一个选择! - zidane
@zidane:是的,还要搜索“ComAutomationFactory”——这是SL4测试版时它的名称,似乎有更多的AutomationFactory相关内容编写。话虽如此,由于Elavated Privilages(仅在Windows上运行),它确实需要SLOOB。不过考虑到它可以让用户更快地在应用程序和PowerPoint之间工作,安装到桌面上以获得所有好处可能是值得的! :) - Todd Main

1

如果 True = HtmlPage.IsPopupWindowAllowed Then
HtmlPage.PopupWindow(New Uri("http://www.yourdomain.com/chartgenerator.ashx?param1=value1&param2=value2"), "new", options)
End If

chartgenerator.aspx 可以显示图像:

' 告诉浏览器内联显示

context.Response.AddHeader("Content-Disposition", "inline; filename=" & FilenameWithExt)

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

' 告诉浏览器保存而不是内联显示

context.Response.AddHeader("Content-Disposition", "attachment; filename=" & FilenameWithExt)

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接