.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が抽出されます。
任意サイズのアイコンを抽出する
任意のサイズのIconを抽出したい場合は、Iconオブジェクトを作る際に抽出したい幅と高さを下記のように指定してください。
VB.NET
' 任意のサイズを指定する Dim icon As New Icon(strm, 24, 24)
C#
// 任意のサイズを指定する Icon icon = new Icon(strm, 24, 24);