WindowsPhoneに内部リソースの画像を表示させよう!

WP7向けプログラミングTipsを地道に書いていこうと思います。

前回も書きましたが、美声時計的何かを作ってます。画像が出て、声が出て、時間になったら切り替わるわけです。練習課題としてはうってつけですね。

では、まずは今の時間に対応する画像を表示してみましょう。

private void RefreshTimeImage()
{
//現在時刻取得
string uriTime = DateTime.Now.ToString("HHmm");
//イメージ変更
string uriPhoto = "photos/" + uriTime + ".jpg";
mainPhoto.Source = new System.Windows.Media.Imaging.BitmapImage((new Uri(uriPhoto, UriKind.Relative)));
RefreshSound();
}

こんな感じですね。自分の場合は内部リソースへのアクセスの仕方で詰まりました。その程度のことも調べるのもキツいのが現状です。

愚痴はおいておいて、基本的には最初に / 無しの相対パスで、かつUriKind.Relativeにすれば通ります。はい、 / 付けて詰みました。厳密には/プロジェクト名;component/フォルダ名/リソースが正しいっぽいです。

今回は時計でして、その時間の(iPhoneアプリの元ファイルを解体したら)画像名は標準書式指定でHHmm.jpgになってますので、それでURI生成。あとは画像をImageオブジェクトへ流し込むだけ。その際、hoge.SourceでURIを指定してやる辺りがSilverlightっぽいですね。

最後のRefreshSoundで美人時計が美声時計に変わるわけですが、そっちは次の機会で。