マクロ用のアイコン

  1. 続けてで、申し訳ありません。

    16x16, 24x24, 32x32, 48x48 の画像を含んだアイコンファイル(.ico)に 256 色と 32bit 色の画像があると、32bit 色の画像より小さい画像が表示されません(32bit 色の画像が縮小して表示されます)。
    でも、エクスプローラーの名前欄のアイコンでも 16x16 の画像が同じように表示されるので、Mery の問題ではないような気もします。

    試したアイコンファイル
    すべて 256 色
    https://dotup.org/uploda/dotup.org2699661.ico
    32x32 のみ 32bit 色
    https://dotup.org/uploda/dotup.org2699662.ico

     |  774  |  返信
  2. これは Windows の仕様だと思います。

    Windows の内部仕様は公開されていないので詳細は分かりませんが、アイコンの色数、サイズともにデバイスの色数に自動的に最適化されるとのことで、その時の自動判定の結果が 32 ビットカラーだった可能性が高いです。

    簡単に言うとディスプレイの色数が 32 ビットカラーなら 32 ビットのアイコンが優先して使われる感じですね。

    試しにディスプレイの色数を 16 ビットカラーに設定してみるとリンクに貼っていただいたアイコンは 256 ビットカラーのものが表示されました。

    また、エクスプローラーで表示されるアイコンも 256 ビットカラーのものになりました。

    【検証】
    https://imgur.com/a/FljzfZW

    【参考】icoファイルをLoadImageで読み込む場合の色数とサイズについて
    https://social.msdn.microsoft.com/Forums/security/ja-JP/ce19116d-7c9b-4ad7-97f4-8801bef2b5d7/ico1250112449124521252312434loadimage123913550112415367961241622580?forum=vcgeneralja

    なお、Windows 10 ではディスプレイの色数を 16 ビットカラーに設定することはできないようなので確認は Windows 7 と XP で行いました。

    【参考】Windows 10 の画面の色深度を 16 bit にしたい
    https://answers.microsoft.com/ja-jp/windows/forum/all/windows-10/507e4c9e-e046-4e81-8e0b-e21f5f632db9

    Windows の機能に頼らず自力で .ico ファイルを解析して読み込めば 256 ビットカラーの画像を表示することもできるという情報もありましたが、ツールバーに表示するアイコンとしての用途であれば Windows の仕様に従って自動的にディスプレイの色数に最適化してもらったほうが効率的かつ視認性も良いと思います。

    ご希望の動作とは異なるかもしれませんがご了承くださいませ。

     |  Kuro  |  返信
  3. またもや詳細な調査ありがとうございます。
    Windows の仕様だったのですね。
    各サイズでの色数を同じにしておけば済むことですし、ご指摘の通り、Windows の仕様に従ったほうが良いですね。

     |  774  |  返信
スポンサーリンク