(via Cagylogic: ContentSourceではイメージが足せない)
WLWプラグインの作成でContentSourceクラスを継承した場合、HtmlScreenCaptureクラスによるWebページのキャプチャが利用できないという話し。スクリーンショットプラグインがContentSourceを継承したプラグインで画像の追加を実現していたので調べてみました。
なぜ利用できないかというと、プラグイン内で画像を動的に作成した場合にBlogへ画像の追加やそのURLを管理してくれるISupportingFilesインタフェースを実装したオブジェクトがContentSourceではもらえないから。ということなんですが、ContentSourceでも画像の追加ができるようです。
その方法は、どこか適当な場所に画像を保存してfile://を用いて参照するようにします。するときちんと画像をアップロードしてくれます。画像はプラグインが自己管理することになりますけどね。コードは次のようになります。
Public Overrides Function CreateContent(ByVal dialogOwner As System.Windows.Forms.IWin32Window, ByRef content As String) As System.Windows.Forms.DialogResult
Dim capture As New HtmlScreenCapture(New Uri("http://katamari.jp"), 800)
Dim bmp As Bitmap = capture.CaptureHtml(5000)
Dim file As String = My.Computer.FileSystem.GetTempFileName
bmp.Save(file)
content = "<img src=""file://" & file & """>"
Return Windows.Forms.DialogResult.OK
End Function
今回の場合のSmartContentSourceよりContentSourceを使う利点はWLWにある画像エフェクトなどの機能が使えるとこだと私は思います。