gpt4 book ai didi

.net - 使用 Icon.ExtractAssociatedIcon 和 ImageList 获取完整质量的 16 x 16 图标

转载 作者:行者123 更新时间:2023-12-04 06:01:15 24 4
gpt4 key购买 nike

按照 this question 的指示,我运行了一些代码来从文件中提取图标并将它们显示在设置为详细信息模式的 ListView 中。我希望图标以 16 x 16 显示,但是当我将 ImageList 大小设置为显示出来的图标时,看起来很奇怪(不知道如何描述它 - 请参见附件截图)。

我已经尝试将大小更改为 32 x 32 并且结果很好,但是肯定必须有一种方法可以获得高质量的 16 x 16 图标,不是吗?

http://img165.imageshack.us/img165/4446/badqualityiconscc4.png

最佳答案

你必须使用 2 个图像列表,一个用于小图像,一个用于大图像,以获得我认为的最佳结果。 (listview 有两个属性,LargeImageList 和 SmallImageList)

编辑(发现新信息在我尝试时有效):

这个版本使用插值来获得较小的拇指,应该会更好。

    Dim BigIcon As Icon = Nothing
BigIcon = Icon.ExtractAssociatedIcon("c:\zebra.zip")
Dim largeimages As New ImageList
Dim smallimages As New ImageList

largeimages.Images.Add("1", BigIcon)

'Fix a smaller version with interpolation
Dim bm As New Bitmap(BigIcon.ToBitmap)
Dim thumb As New Bitmap(16, 16)
Dim g As Graphics = Graphics.FromImage(thumb)
g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
g.DrawImage(bm, New Rectangle(0, 0, 16, 16), New Rectangle(0, 0, bm.Width, bm.Height), GraphicsUnit.Pixel)
g.Dispose()
bm.Dispose()
smallimages.Images.Add("1", thumb)
ListView1.SmallImageList = smallimages
ListView1.LargeImageList = largeimages
thumb.Dispose()
ListView1.Items.Add("Test", "Test", "1")

关于.net - 使用 Icon.ExtractAssociatedIcon 和 ImageList 获取完整质量的 16 x 16 图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/463273/

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