2006年03月29日
川俣晶の縁側ソフトウェア技術雑記 total 8169 count

Windows FormsのNotifyIconで、16x16アイコンがあるのに、32x32アイコンを縮小して表示する問題

Written By: 川俣 晶連絡先

 時間がないので、遭遇した問題のメモだけ。

 これの内容が適切かどうかは分かりません。

 Visual Studio 2005で、C#にてWindows Formsアプリケーションを作成中に遭遇した問題です。

 16x16 16色と32x32 16色のデザインを含むアイコンを作成し、IconMainという名前でリソースに登録します。

 まず、フォームのLoadイベントで以下のコードを使います。

this.Icon = Resources.IconMain;

 フォームのコントロールボックスや、タスクバーでは16x16のデザインが使用されます。問題なく美しく見えます。

 次に、フォームのLoadイベントで以下のコードを使います。notifyIconMainは、NotifyIconコントロールとします。

this.notifyIconMain.Icon = Resources.IconMain;

 すると、タスクトレイに32x32のデザインを16x16に縮小したものが表示されます。縮小が入るので美しくありません。

 これを解消するには、以下のように書き直します。

this.notifyIconMain.Icon = new Icon(Resources.IconMain, new Size(16, 16));

 すると、タスクトレイに16x16のデザインそのままが表示されます。縮小が入らないので、綺麗に見えます。