更改 ImageList 的 ImageSize 属性 显示空白图像
Changing ImageSize property of ImageList displays blank images
在 VB.Net 的 Visual Studio 解决方案中,我有一个 ListView 和一个与该 ListView 关联的 ImageList。它被设置为 LargeImageList 和 SmallImageList。
这是在不以编程方式更改 ImageList 的 ImageSize 属性 的情况下的样子:
但是,如果我通过以下方式调整 ImageList 的大小:
ImageList1.ImageSize = New Size(64, 64)
或任何其他尺寸,我得到这个:
之后我尝试调用ListView1.Refresh(),仍然没有。
我什至尝试过:
ListView1.LargeImageList.ImageSize = New Point(64, 64)
如何在项目运行时动态设置图标的大小?我需要能够将它们调整为多种尺寸(即 32x32、64x64、96x96 等)
ImageList 中的图片都是 128x128 的,这样更容易缩小。
更改 ImageSize
会导致重新创建句柄,这可能会破坏 link 或赋值。这在 MSDN 上有解释。它还会在您更改 ColorDepth
时警告图像被删除;但至少在某些情况下,当您更改大小时,这似乎也会发生:
imgLst.ImageSize = New Size(64, 64)
Dim num = ImgLst.Images.Count ' == 0
无论如何,反复更改一组的大小可能不是一个好主意:将大小从 32 调整为 128 可能会产生可怕的结果。有效的方法是将一个 ImageList
作为母版,其中包含 128x128 图像。当你想改变尺寸时,将它们复制到 "working" ImageList
中的新尺寸:
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
称其为:
LoadImagesWithSize(New Size(64, 64))
每个可能的尺寸都有一个 "master" 和 "active" 尺寸版本,而不是 ImageList
。好像还不错。
在 VB.Net 的 Visual Studio 解决方案中,我有一个 ListView 和一个与该 ListView 关联的 ImageList。它被设置为 LargeImageList 和 SmallImageList。
这是在不以编程方式更改 ImageList 的 ImageSize 属性 的情况下的样子:
但是,如果我通过以下方式调整 ImageList 的大小:
ImageList1.ImageSize = New Size(64, 64)
或任何其他尺寸,我得到这个:
之后我尝试调用ListView1.Refresh(),仍然没有。
我什至尝试过:
ListView1.LargeImageList.ImageSize = New Point(64, 64)
如何在项目运行时动态设置图标的大小?我需要能够将它们调整为多种尺寸(即 32x32、64x64、96x96 等)
ImageList 中的图片都是 128x128 的,这样更容易缩小。
更改 ImageSize
会导致重新创建句柄,这可能会破坏 link 或赋值。这在 MSDN 上有解释。它还会在您更改 ColorDepth
时警告图像被删除;但至少在某些情况下,当您更改大小时,这似乎也会发生:
imgLst.ImageSize = New Size(64, 64)
Dim num = ImgLst.Images.Count ' == 0
无论如何,反复更改一组的大小可能不是一个好主意:将大小从 32 调整为 128 可能会产生可怕的结果。有效的方法是将一个 ImageList
作为母版,其中包含 128x128 图像。当你想改变尺寸时,将它们复制到 "working" ImageList
中的新尺寸:
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
称其为:
LoadImagesWithSize(New Size(64, 64))
每个可能的尺寸都有一个 "master" 和 "active" 尺寸版本,而不是 ImageList
。好像还不错。