ContentSourceでHtmlScreenCaptureを使う

投稿日 : 2008年1月22日 20:34

(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にある画像エフェクトなどの機能が使えるとこだと私は思います。

フィードバック

# re: ContentSourceでHtmlScreenCaptureを使う

2008/01/23 16:13 by
なるほど!なるほど?
これだと、保存のときに、そのファイルが残っていることが保証できないので、それが問題。まぁじゃんじゃん残すようなフォルダ指定とかができればOKなのか。
なるほど!

# re: ContentSourceでHtmlScreenCaptureを使う

2008/01/23 19:11 by JZ5
ぢさん
なるほど言いすぎですw
>そのファイルが残っていることが保証できない
確かにそうですね。プラグインは1回呼ばれるだけなので後からのケアも難しいですね。

# HtmlScreenCapture使用時にエラーポップアップ

2008/06/16 0:11 by katamari.wankuma.com
HtmlScreenCapture使用時にエラーポップアップ

# xweSnprHiHZsjP

2014/08/07 11:24 by http://crorkz.com/
xi3rln Im thankful for the blog article. Will read on...
コメントの入力
タイトル
名前
Url
コメント