gpt4 book ai didi

C#:使用包含多个图像的 .ico 文件

转载 作者:太空狗 更新时间:2023-10-29 20:26:09 27 4
gpt4 key购买 nike

我正在尝试在 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 指出:

In the .NET Framework version 1.1 or later, the default is Depth8Bit.

...但是,这并没有阻止 ImageList 从我的 8 位图标中删除颜色。经过仔细检查,我的图标(共有三个)是:4 位、4 位、8 位。两个 4 位图标共享调色板,但 8 位图标有不同的调色板。图标之间总共有 257 种颜色。尽管只有轻微的溢出,.Net 将其减少到只有 20 种颜色。

最佳答案

您需要创建一个新的图标对象。接受原始 Icon 对象和大小的构造函数有一个重载。我不知道新的 Icon 对象是否会共享相同的 HIcon,但它会正确绘制。为了安全起见,我建议确保将两者都处理掉。

关于C#:使用包含多个图像的 .ico 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/966932/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com