首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改ImageSize属性ImageList显示空白图像

更改ImageSize属性ImageList显示空白图像
EN

Stack Overflow用户
提问于 2016-03-11 21:58:13
回答 1查看 3.7K关注 0票数 4

在Visual的VB.Net解决方案中,我有一个ListView和一个与该ListView相关联的ImageList。它被设置为LargeImageList和SmallImageList。

在不以编程方式更改ImageList的ImageList属性的情况下,如下所示:

但是,如果我通过以下方法调整ImageList的大小:

代码语言:javascript
复制
ImageList1.ImageSize = New Size(64, 64)

或者其他尺寸,我知道这个:

后来我试着打电话给ListView1.Refresh(),还是什么也没打。

我甚至试过:

代码语言:javascript
复制
ListView1.LargeImageList.ImageSize = New Point(64, 64)

如何在项目运行时动态设置图标的大小?我需要能够将它们调整到几个大小(例如32x32,64x64,96x96等等)

ImageList中的图像都是128x128,这样就可以更容易地缩小它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-11 23:13:25

更改ImageSize会导致重新创建句柄,这可能会破坏链接或分配。这在MSDN上得到了解释。它还警告您在更改ColorDepth时删除的图像;但这似乎也发生在更改大小时,至少在某些情况下是这样的:

代码语言:javascript
复制
imgLst.ImageSize = New Size(64, 64)
Dim num = ImgLst.Images.Count          ' == 0

反复改变一组的大小可能不是个好主意:调整大小从32调整到128可能会带来可怕的结果。真正起作用的是让一个ImageList作为主程序,其中包含128x128图像。当您要更改大小时,请将它们复制到新大小中的“工作”ImageList

代码语言:javascript
复制
Private Sub LoadImagesWithSize(sz As Size)

    imgLst.ImageSize = sz
    imgLst.Images.Clear
    For n As Int32 = 0 To ImageList128.Images.Count - 1
        imgLst.Images.Add(ImageList128.Images(n))
    Next
    myLV.LargeImageList = imgLst

End Sub

称之为:

代码语言:javascript
复制
LoadImagesWithSize(New Size(64, 64))

而不是针对每个可能的大小,有一个“主”与“活动”大小版本ImageList。好像挺好的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35950688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档