9

私のアプリが16x16ピクセルのサイズのアイコンをWindowsトレイに送信していることに気付きました。また、Vista PCには、18x18でアイコンを表示するように見える倍幅のタスクバーがあります。アプリのアイコンのサイズ変更アーティファクトはひどいように見えます。アイコンのサイズをWindowsに問い合わせるにはどうすればよいですか?

編集:

ピクセルフォントのテキストオーバーレイを使用して、アイコンを動的に生成しています。多数のアイコンサイズを動的に生成するのは無駄に思えるので、すべての「可能な」サイズでアイコンを作成することは避けたほうがよいでしょう(それらが何であるかさえわかりません)。

GetSystemMetrics(SM_CXSMICON)は、16(不正な値)を返します。

GetThemeBackgroundContentRectも役に立ちませんでした。

4

3 に答える 3

0

アイコンを複数の形式で作成し、Windowsに必要なものを選択させます。

これが.ico形式に関するウィキペディアの記事です。

本当に知る必要がある場合は、SM_CXICONまたはSM_CYICONのパラメーターを持つGetSystemMetricsが、Windowsがロードしたい幅と高さを教えてくれます。

于 2009-02-20T03:51:12.497 に答える
0

最善の策は、GetThemeBackgroundContentRectがトレイ通知バックグラウンドのiPartIdとして渡されることです。TBN_BACKGROUND

GetThemeBackgroundContentRectは、親要素の境界線をオーバーラップせずに描画に使用できる現在のテーマによって定義されたサイズを返す必要があります。これを正しく読んでいれば、それは許容される最大サイズの通知アイコンであり、おそらく使用されているサイズです。

複数のDPI設定でテストするのが、これが正しい値を返しているかどうかを判断する最も簡単な方法です。

于 2009-02-20T05:26:09.630 に答える
0

マークの中心的な答えは正しいものです。複数の形式でアイコンを作成し、Windows に適切な形式を選択させます。HighDPI シナリオでは、32x32 および 64x64 アイコンを忘れずに実行してください。

ただし、SM_CXICON/SM_CYICON は、タスクバーで使用されるサイズを必ずしも返すとは限りません。タスクバーは、そのサイズに適したアイコン サイズを選択します (これはWindow 7 ではより重要です)

適切なサイズのアイコンを指定するだけで問題ありません。

于 2009-02-20T04:07:53.767 に答える