2008年5月6日

 WPFむずかしす。WPF以前はプロジェクトに画像を追加してコード中から参照する場合は、画像ファイルのプロパティ、ビルドアクションを「埋め込まれたリソース」にしてた。WPFだと「Resource」という新しい項目が増えてる。そうした場合、コード中から参照する方法がよくわからず連休中 悩んだ。

 とりあえず次のようにすると参照できた。AssemblyNameのところはアセンブリ名。icon.pngが画像ファイル。いまいちこれでいいのか良くわからない。どうなんでしょうか。

Dim uri = "pack://application:,,,/AssemblyName;component/icon.png"
Dim info = Application.GetResourceStream(New Uri(uri, UriKind.Absolute))
Dim img = Imaging.BitmapFrame.Create(info.Stream)

 UriKind.Absoluteのところを「UriKind.Relative」とすると相対アドレスで指定ができるので、pack://なんちゃらと書く必要はなくなる。けど、相対なのでコードを実行する場所がたぶん問題になってくると思う……。

posted @ 21:28 | Feedback (164)

CreateContentFromUrlメソッドが呼ばれる条件

 Tip 1も参照。URLプラグインを作成するとき、UrlContentSource属性にプラグインの対象とするURLを正規表現で指定します。先の例では、「http://katamari\.jp」と書きました(ドット(.)は\マークでエスケープしてます)。

 ここの部分変えたらURLでないパターンの貼り付け時にも使えるんじゃね? と思えるのですが、できないようです。残念。CreateContentFromUrlメソッドが呼ばれるためには、貼り付けた文字列が少なくとも正規表現で「.+://」となっている必要がありそうです。私が調べてみただけで、SDK文書にそう書いてるわけではないです。

posted @ 21:08 | Feedback (3)

 Windows Live WriterのプラグインにはURLの貼り付けやBlog Thisによる引用時に動作するプラグインがあります。URLプラグインを作るには、以下のようにWriterPlugin属性に加えUrlContentSource属性を付けます。

Imports WindowsLive.Writer.Api

<WriterPlugin("826d0052-25f5-4ebc-bb8a-d594f4c7bfdb", _
              "SamplePlugin"), _
 UrlContentSource("http://katamari\.jp", _
                  ProgressCaption:="ProgressCaption", _
                  ProgressMessage:="ProgressMessage", _
                  RequiresProgress:=True)> _
Public Class UrlPlugin
    Inherits ContentSource

    Public Overrides Sub CreateContentFromUrl(ByVal url As String, ByRef title As String, ByRef newContent As String)
        System.Threading.Thread.Sleep(3000)
    End Sub
End Class

 URLプラグインにはWLWのバグがあります。少しぶりにプラグインを作ってみたのですが、修正されてないようです。開発チームは認識しているはずなので放置なのかー。

 バグというのは、プラグイン内の処理に時間がかかる場合、プログレスウィンドウの表示指定ができるのですが、メッセージが正しく設定どおりに反映されません。上のコード、ProgressCaptionとProgressMessage部分です。RequireProgressをTrueに設定しておくと自動的にCreateContentFromUrlメソッドが呼ばれたときに次のようなウィンドウが表示されます。

SamplePlugin (2)

 キャプション部分にプログレスメッセージが表示されてしまいます。うーむ。かっこ悪くて使えませんね。公開されているURLプラグイン自体が皆無なのと、次期WLWで消える機能なものだとしたら修正されないのかもしれませんね。この点を除けばURLプラグインは正常に動きます(知っている限りでは)。

posted @ 21:07 | Feedback (2)

 「使ってみよう! Windows Live SDK/API:第6回 VETileSourceSpecification and MapCruncher ―― オリジナル地図の作成」が先週に公開されています。今回はVirtual Earthのタイルの話しとMapCruncherです。ツールのMapCruncherを使用するとVirtual Earth上にオリジナルの地図を重ねて表示することができます。

 これまではMapCruncherが生成するWebページを利用するものだったのですが、先日のVirtual Earth 6.1リリースにあわせて、Live Search MapでMapCruncherのデータをコレクションとして追加できるようになっています。MapCruncherが生成するWebページは正直しょぼかったので、コレクションとして追加してVirtual Earth Map Controlと組み合わせて使用できるとなると かなり有用なのではないかと思います。

Live Search Maps

 上の画像からMapCruncherのコレクションの例が見れます。席番号を重ねたものなのかな? 残念ながら日本語版では今のところMapCruncherのタイルをコレクションとして追加できません。実は、英語版でもヘルプどおりにしてもMapCruncher追加の項目がでないんですよね……。わかる方は教えてください。

 ちなみに連載記事では大学のキャンパスマップを使いました。結果がLive Mapsの建物の画像とずれていて奇麗な結果ではないですが、結果で示したような配置のようです。建物が途中から地下になってるのかな? 複雑な構造なので実際の建物と地図上の建物が一致してないみたい。

posted @ 21:05 | Feedback (4)