12

色深度が 16 ビットのディスプレイ (16 ビット色に設定されたリモート デスクトップ セッションを含む) では、Windows フォーム アプリケーションは、割り当てられたタイトル バー アイコン ( Form.Icon) の低色深度バージョンを使用します。ただし、WPF アプリケーションと Windows エクスプローラーは、存在する場合は 24 ビットの色深度を使用します。

これは、現在取り組んでいる Windows フォーム アプリケーションで初めて見ました。私が使用していたアイコンには、4 ビット、24 ビット、および 32 ビットのバリアントが定義されていました。16 ビット ディスプレイでは、Windows フォームは、見栄えの良い 24 ビットまたは 32 ビット バージョンではなく、見苦しい 4 ビット バージョンをタイトル バーに使用していました。

動作をテストして説明するために、サイズと色の形式ごとに明らかに異なるデザインのテスト アイコンを作成しました。4 ビット、8 ビット、24 ビット、および 32 ビットのバリアントを含めました。

以下は、32 ビットと 16 ビットの両方のディスプレイでの結果です。

32 ビット ディスプレイでは、すべて問題ありません。

ウィンドウズ・エクスプローラ:

Windows エクスプローラー、32 ビット ディスプレイ

WPF アプリケーション:

WPF アプリケーション、32 ビット表示

Windows フォーム アプリケーション:

Windows フォーム アプリケーション、32 ビット ディスプレイ

16 ビット ディスプレイでは、Windows フォームは、WPF または Windows エクスプローラーよりも色深度の低いアイコンのバリアントを表示します。

ウィンドウズ・エクスプローラ:

Windows エクスプローラー、16 ビット ディスプレイ

WPF アプリケーション:

WPF アプリケーション、16 ビット表示

Windows フォーム アプリケーション:

Windows フォーム アプリケーション、16 ビット ディスプレイ

16 ビット ディスプレイでは、Windows エクスプローラーと WPF は 24 ビット形式を使用しますが、Windows フォームは使用しません。この場合、8 ビット形式を使用しました。私の実際のアプリケーション アイコンには 8 ビット バリアントがありませんでした (しかし、これから作成します!)。そのため、Windows フォームは 4 ビット バリアントを使用しました。

Windows フォーム アプリケーションで、16 ビット ディスプレイのタイトル バーに 24 ビット バージョンのアイコンを表示するにはどうすればよいですか?

4

1 に答える 1

1

残念ながら、16ビットシステムで24ビット画像を表示する方法はありません。ただし、アプリケーションを実行しているシステムに適合させるためのトリックを思い付く可能性があります。

したがって、画像の「ビット」フィールドを偽造して(写真編集ソフトウェアを使用してみてください)、実際には24であるときに16ビットであると思い込ませることができます。それは可能です。数年前になんとかできましたが、できません。方法を覚えておいてください(ごめんなさい)。

私はこれがあなたがあなたの問題を解決しようとするべき方法だと思います。

幸運を!

于 2012-11-06T18:43:59.517 に答える