IconをBitmapオブジェクトへ変換する

.NET Compact Frameworkは、.NET Frameworkからモバイル向けにいくつか機能を削除されています。Icon.ToBitmap()が削除されており、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が抽出されます。

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

VB.NET

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

C#

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