2

NotifyIconを使用してプロセスのステータスを表示する小さなシステム トレイ アプリケーションを作成しました。次の方法で、高品質の 64 x 64 png 形式のアイコンを読み込んでいます。

Bitmap rawImage = new Bitmap(Assembly.GetExecutingAssembly().GetManifestResourceStream("Snitch.Icons.Loading.png"));
m_icon.Icon = Icon.FromHandle(rawImage.GetHicon());  

しかし、システム トレイに表示されるアイコンは、ソース アイコンのようには見えません。何か設定が間違っているのでしょうか? VS2008 が作成する 16x16、32x32 の 8 ビット アイコン ファイルを試してみましたが、それ以上の公平性はないようです。

4

3 に答える 3

2

アプリケーションの Form オブジェクトに NotifyIcon コントロールを追加すると、アプリケーションはタスクバーのトレイ領域にアイコンを表示します。通知アイコンのレンダリング サイズは、コントロール ボックスおよびタスクバー アイコンの場合と同じです: 16x16 ピクセルで、タスクバーの高さに依存するシステム トレイの高さに合わせて引き伸ばされる可能性があります。ただし、奇妙なことに、Windows はこの状況で 16x16x256 ビットマップを使用しません。デフォルトで 32x32x256 ビットマップを使用し、必要なサイズに縮小します。通知アイコンには 32x32 バージョンを使用し、タスクバーとコントロール ボックスには 16x16 バージョンを使用していますが、この違いについて特に正当な理由は思いつきませんが、それはあります。

http://www.hhhh.org/cloister/csharp/icons/

注-記事はcからのものです。2003年

于 2010-02-26T00:02:48.843 に答える
1

システム トレイにも歪んだアイコンが表示されますが、問題は Win DPI 設定にあることがわかりました。私の場合、100 ではなく 115 です。システム トレイに表示されると、16x16 のアイコンは実際には 18x18 として表示されます。数値は次の式から得られます。

iconSize= (int) (16* (115/100))= int (18.4) = 18

Win は 16x16 のアイコンを受け取り、いくつかのピクセルの行と列を新しいサイズに合わせて「複製」するため、18x18 のアイコンは見栄えが悪くなります。カスタムの 18x18 アイコンを Win に提供しようとしましたが、Win はそのままではシステム トレイに表示しません。最初にアイコン ビットマップを最も近い 2 のべき乗サイズ (16x16) に強制し、次にピクセル クローンによって表示するために 18x18 に引き伸ばします (アーティファクトが予想されます)。DPI を変更する以外に回避策はありません。これは、強制的な中間の「2 のべき乗」ステップを制御できないためです。

于 2011-04-20T06:04:53.903 に答える
1

フルサイズの写真に対するサムネイル画像の品質を考慮してください。ここで、写真全体を 16x16 ピクセルに縮小することを想像してみてください。元のサイズと新しいサイズの不一致が大きいほど、縮小または拡大に関係なく、結果の見栄えが悪くなります。

可能であれば、16x16、32x32、48x48、および 64x64 の個別のアイコンを実際に含む .ico ファイルを取得または作成することをお勧めします。次善の策は、おそらく通知領域にプレーンな 16x16 アイコンを使用することです。画像のサイズ変更/再サンプリングは、ゆがんで見えます。

Web 上には、複数のサイズまたは 16x16 のアイコンを無料または安価にダウンロードできるサイトが多数あります。アイコンの場所についてはすでにいくつかの質問があるので、自分でサイトのリストを作成しようとはしません。

于 2010-02-26T00:05:00.680 に答える