我试图从包含两个图标的 .ico 文件中设置 C# 中的 TreeView 中的图像: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;
我哪里错了?
Answer:
要使其发挥作用,您必须做两件事。第一个,如下所述,是手动为图像列表指定正确的尺寸。第二个是您可能还必须指定颜色深度。 MSDN 指出:
在 .NET Framework 1.1 或更高版本中,默认值为 Depth8Bit。
...但是,这并没有阻止 ImageList 从我的 8 位图标中删除颜色。仔细检查后,我的图标(共有三个)是:4bit、4bit、8bit。两个 4 位图标共享调色板,但 8 位图标有不同的调色板。图标之间总共有 257 种颜色。尽管只有轻微的溢出,.Net 将其减少到仅仅20 colors.
您需要创建一个新的 Icon 对象。构造函数有一个重载,它接受原始 Icon 对象和大小。我不知道新的 Icon 对象是否会共享相同的 HIcon,但它会正确绘制。为了安全起见,我建议确保两者都得到处理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)