気楽なソフト工房

プログラミングについていろいろな記事を書いています。



mykonos2008

Author:mykonos2008
システムエンジニアとして働いている30代の会社員です。
仕事や趣味でプログラムを書いている方の役に立つ記事を書いていきたいと思っています。
ご意見、ご感想はこちらまで
If you are an english speaker,Please visit my english blog.

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
最近、忙しくてあまりブログを更新できていないのですが、
現在、Youtubeビューワーの新しいバージョンを開発中です。

WPFで全面的に作り直します。
再生サイズをワイドスクリーンに対応し、検索した動画と再生中の関連動画、
コメントを同時に閲覧できるようにする予定です。

是非、ご期待ください。

スポンサーサイト
今日は、URLで指定された画像をWPFで表示する方法を紹介します。
画像の表示には「Image」クラスを使用します。

早速、コードを見てください。

   Image image = new Image();
   BitmapImage imageSource =  new BitmapImage(new Uri(画像のURL));
   image.Source = imageSource;

上記のサンプルでは、ImageクラスのインスタンスをC#側で生成していますが、
XAMLで宣言しても同じです。

URLの画像の取得には「BitmapImage」クラスを使用します。
画像の指定方法はコンストラクタにUriを指定するだけです。

そして、そのBitmapImageのインスタンスをImageのSourceプロパティに設定します。
画像のダウンロードは非同期で行われ、完了次第画面に表示されます。

これだけでは一点問題があります。

Imageのサイズが自動的に調整され、大きくなったりしていまいます。
これを防ぐためには以下のようにします。

   Image image = new Image();
   BitmapImage imageSource =  new BitmapImage(new Uri(画像のURL));
   image.Source = imageSource;

   //画像のロード完了イベントを処理して、画像のサイズを設定する
   imageSource.DownloadCompleted += new EventHandler((Object sender,EventArgs e) =>
   {
       image.Width = imageSource.PixelWidth;
       image.Height = imageSource.PixelHeight;
   });


BitmapImageクラスのPixelWidth、PixelHeightプロパティを使用すれば良いのですが、
先ほど、言いましたように画像のダウンロードは非同期で行われるため、
Sourceを設定した直後に取得しても0が返されてしまいます。

そこで上記のコードのように、BitmapImageクラスのDownloadCompletedイベントを処理して、
画像のロード完了後に画像のサイズを取得するようにします。
(ハンドラはラムダ式の匿名メソッドにしました。)

6月のOSシェアとブラウザシェアを発表します。
※結果は当ブログのアクセスログの分析結果です。

ブラウザのシェア

1位  Firefox3.0     36.9%(-5.5%)
2位  IE7.0          34.8%(+5.5%)
3位  IE6.0          19.0%(-1.2%)
4位  Google Chrome  3.2% (+0.8%)
5位  IE8.0          3.0% (-0.2%)
・・・
その他

※()の中の数字は前月比。

先月に引き続き、FireFox3.0が1位でしたが、2位のIE7.0との差はかなり縮まりました。
ネットのニュースでIE8.0が急激にシェアを拡大していると書かれていました当ブログを
訪問してくださる方々の間では、それほど広まっていないようです。

Google Chromeが少しですが伸びました。

Windows系OSのシェア

1位  XP             75.7%(+2.5%)
2位  Vista          21.3%(-2.1%)
3位  2000           1.0% (-0.4%)

依然、XPが強いです。Windows7のリリースも決まったので今からVistaが伸びることは考えられないですね。

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。