酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Windows Mobile(.NET Compact Framework)でIconをBitmapオブジェクトへ変換する

.NET Compact Frameworkでは、デスクトップPC版の.NET Frameworkのサブセットですので、容量削減のためにモバイル向けにいくつか機能を削除されています。

今回紹介するIconからBitmapオブジェクトを生成するのもIcon.ToBitmapメソッドが削除されており、IconからBitmapに変換する場合にはひと手間が必要になります。

IconからBitmapオブジェクトを生成する

IconからBitmapに変換する方法をご紹介します。

VB.NET

 Dim filePath As String = "\Storage Card\favicon.ico"
 
 ' 変換先のBitmapオブジェクト
 Dim bmp As Bitmap = Nothing
 
 ' 変換元のIconオブジェクトを作る
 Using strm As New IO.FileStream(filePath, IO.FileMode.Open), _
   icon As New Icon(strm)
   
   ' 変換先のBitmapオブジェクトを作る
   bmp = New Bitmap(icon.Width, icon.Height)
   
   ' iconをbmpに描画する
   Using g As Graphics = Graphics.FromImage(bmp)
     g.DrawIcon(icon, 0, 0)
   End Using
 End Using
 
 ' PictureBoxへ表示
 Me.PictureBox1.Image = bmp

C#

 string filePath = "\\Storage Card\\favicon.ico";
 
 // 変換先のBitmapオブジェクト
 Bitmap bmp = null;
 
 // 変換元のIconオブジェクトを作る
 using (IO.FileStream strm = new IO.FileStream(filePath, IO.FileMode.Open)) {
   using (Icon icon = new Icon(strm)) {
     
     // 変換先のBitmapオブジェクトを作る
     bmp = new Bitmap(icon.Width, icon.Height);
     
     // iconをbmpに描画する
     using (Graphics g = Graphics.FromImage(bmp)) {
       g.DrawIcon(icon, 0, 0);
     }
   }
 }
 
 // PictureBoxへ表示
 this.PictureBox1.Image = bmp;

実行結果

上記のコードを実行すると、favicon.icoからシステムによって選ばれたサイズのIconが抽出されます。

f:id:ch3cooh393:20140424114716p:plain

任意サイズのアイコンを抽出する

任意のサイズのIconを抽出したい場合は、Iconオブジェクトを作る際に抽出したい幅と高さを下記のように指定してください。

VB.NET

 ' 任意のサイズを指定する
 Dim icon As New Icon(strm, 24, 24)

C#

 // 任意のサイズを指定する
 Icon icon = new Icon(strm, 24, 24);