C#のツリービューで32x32バージョンと16x16バージョンの2つのアイコンを含む.icoファイルから画像を設定しようとしています。画像は設定されていますが、.Netは32x32のバージョンを選択しており、容易に利用できる16x16画像を選択する代わりに縮小しています(ひどく見えます)。C#:複数の画像で.icoファイルを使用する
関連するコード:
ilTree.Images.Add(Properties.Resources.group);
ilTree.Images.Add(Properties.Resources.single);
ilTree.Images.Add(Properties.Resources.db);
treeStored.ImageList = ilTree;
はどこで間違ったんですか?
回答:
あなたはこの作業を取得するためにしなければならない2つのものがあります。最初に述べるように、画像リストに正しいサイズを手動で指定することです。もう1つは、おそらく色の濃さを指定する必要があるということです。
.NET Frameworkバージョン1.1以降では、既定値はDepth8Bitです。
...しかし、ImageListが私の8ビットアイコンから色を削除するのを防ぐことはできませんでした。精密検査の結果、私のアイコン(3つありました):4ビット、4ビット、8ビット。 2つの4ビットアイコンはパレットを共有しましたが、8ビットは異なるパレットを持っていました。合計で、アイコンの間に257色がありました。唯一のわずかなオーバーフローにもかかわらず、.Netは単にの色にそれをノックダウンしました。
さて、それは動作します。 TreeViewがちょうどThe Right Thing™をやってくれるのであれば、それは確かにはるかに良いでしょう... – Thanatos
実際には、それほどではありません。これは - ilTree.ColorDepth = ColorDepth.Depth24Bit; - も必要です。それ以外の場合は、(間違って)16ビットとみなされます。 – Thanatos
デフォルトは8ビットですが、以前に指定した色深度の画像をロードする必要があります。 – snarf