【发布时间】:2009-06-08 20:49:04
【问题描述】:
我正在尝试在 C# 中的 TreeView 中设置图像,该图像来自一个包含两个图标的 .ico 文件:一个 32x32 版本和一个 16x16 版本。图像正在设置,但 .Net 选择了 32x32 版本,并将其缩小(看起来很糟糕),而不是选择现成的 16x16 图像。
相关代码:
ilTree.Images.Add(Properties.Resources.group);
ilTree.Images.Add(Properties.Resources.single);
ilTree.Images.Add(Properties.Resources.db);
treeStored.ImageList = ilTree;
我哪里错了?
答案:
您必须做两件事才能使其正常工作。第一个,如下所述,是手动为图像列表指定正确的大小。第二个是您可能还必须指定颜色深度。 MSDN 指出:
在 .NET Framework 1.1 或更高版本中,默认为 Depth8Bit。
...但是,这并没有阻止 ImageList 从我的 8 位图标中删除颜色。经过仔细检查,我的图标(有三个)是:4bit、4bit、8bit。两个 4 位图标共享调色板,但是 8 位图标有不同的调色板。图标之间总共有 257 种颜色。尽管只有轻微的溢出,.Net 将其降低到只有 20 种颜色。
【问题讨论】: