2010-05-10 4 views
3

У меня есть приложения Silverlight 3.0 с некоторыми пользовательскими графиками и некоторыми графиками. Мне нужно найти лучший способ передать эти графики в презентацию PowerPoint.Как скопировать изображение диаграммы из приложения Silverlight в буфер обмена?

Я читал, что Silverlight 4.0 предлагает API буфера обмена, но есть только поддержка Unicode-текста, а не изображений.

Есть ли способ достичь этой задачи, не заставляя пользователей вручную PrtSc и не вставлять в другие приложения?

ответ

2

В SL3 нет простого способа сделать это. Моя рекомендация состояла бы в том, чтобы использовать WriteableBitmap и сохранить его в IsolStorage, а затем запросить у пользователя диалог FileSave, чтобы сохранить его в поле (а затем они должны были поместить его в PowerPoint). Единственная проблема с этим диалогом в SL3 заключается в том, что он не позволяет вам устанавливать тип расширения, поэтому им нужно будет ввести расширение PNG или JPG. И это, и PrtSc, Ctrl + P требует многошагового действия пользователя и всегда является точкой отказа.

В SL4 есть еще выбор - вам даже не нужен буфер обмена в SLOOB. Вы можете просто использовать AutomationFactory для автоматизации PowerPoint.

+0

Я буду читать о AutomationFactory, я не знала об этом. SL3 не требуется, потому что я могу обновить SL4 легко ... Но SLOOB не является Опция! – zidane

+0

@zidane: Да, ищите «ComAutomationFactory» - вот что это было, когда SL4 был в бета-версии, и, похоже, было написано больше файлов AutomationFactory. Тем не менее, это требует SLOOB из-за Elavated Privilages (и работает только в Windows). Возможно, стоит подумать о SLOOB - попросите своих пользователей с тизерами «работать еще быстрее между этим приложением и PowerPoint. Установите на свой рабочий стол все полезные свойства! ":) –

1

Если правда = HtmlPage.IsPopupWindowAllowed Тогда
HtmlPage.PopupWindow (New Uri ("http://www.yourdomain.com/chartgenerator.ashx?param1=value1&param2=value2"), "новые", опционы)
End If

chartgenerator.aspx может либо выводить изображение:

'сообщить браузеру, чтобы отобразить INLINE

context.Response.AddHeader ("Content-Disposition", "инлайн, имя файла =" & FilenameWithExt)

или отобразить Открыть, Сохранить, Отменить диалог:

'сказать браузеру, чтобы сохранить, а не отображение встроенных

context.Response.AddHeader ("Content-Disposition", «привязанность; имя файла =»& FilenameWithExt)

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

Смежные вопросы