PowerShellでアプリケーションアイコンを作ってみる。

powershell コンピュータ
powershell

ビットマップからアイコンを取得することが出来るようなので試してみました。

$outPath = "./output.ico"

$Bitmap = [System.Drawing.Bitmap]::new(64, 64, [System.Drawing.Imaging.PixelFormat]::Format24bppRgb)
$g = [System.Drawing.Graphics]::FromImage($Bitmap)
# 黒で塗りつぶし
$rect = [System.Drawing.Rectangle]::new(0, 0, 64, 64)
$g.FillRectangle([System.Drawing.Brushes]::Black, $rect);
# 文字を描く
$font = [System.Drawing.Font]::new("MS UI Gothic", 20);
$g.DrawString("あい", $font, [System.Drawing.Brushes]::White, 0, 2);
$g.DrawString("こん", $font, [System.Drawing.Brushes]::White, 12, 34);
$g.Dispose()

$icon = [System.Drawing.Icon]::FromHandle($Bitmap.GetHicon())
$fs = [System.IO.FileStream]::new($outPath, [System.IO.FileMode]::Create, [System.IO.FileAccess]::Write)
$icon.Save($fs)
$fs.Close()
$icon.Dispose()
$Bitmap.Dispose()

出来上がったアイコンをアプリケーションに割り当ててみます。

using System;
using System.Windows.Forms;

// csc IconTest.cs /win32icon:output.ico

class Form1 : Form
{
    [STAThread]
    static void Main()
    {
        Application.Run(new Form1());
    }
}

csc.exeでコンパイルする際、/win32iconオプションでアイコンファイルを指定します。

csc IconTest.cs /win32icon:output.ico

生成されたIconTest.exeにアイコンが割り当てられました。

コメント