当前位置:  开发笔记 > 编程语言 > 正文

使用Icon.ExtractAssociatedIcon和ImageList获得全面质量的16 x 16图标

如何解决《使用Icon.ExtractAssociatedIcon和ImageList获得全面质量的16x16图标》经验,为你挑选了1个好方法。

按照这个问题的说明,我运行了一些代码来从文件中提取图标并将它们显示在ListView设置为详细信息模式中.我希望图标显示为16 x 16,但是当我将ImageList大小设置为时,出现的图标看起来非常奇怪(不确定如何描述它 - 请参阅附带的屏幕截图).

我已经尝试将尺寸改为32 x 32并且它们很好,但肯定必须有一种方法来获得高质量16 x 16图标一定不存在?

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



1> Stefan..:

您必须使用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")


任何引起我必须做的实际工作注意力的事情总是很好!;)
推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有