ビットマップからアイコンを取得することが出来るようなので試してみました。
$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
コメント