我正在尝试在infragistics ultrawingrid中加载图像图标。为此,我试图初始化行,并根据条件我正在加载相应的图像。
但是当我尝试使用Image.FromFile()
请建议如何解决加快网格加载的问题
Private Sub ugMain_InitializeRow(sender As Object, e As InitializeRowEventArgs) Handles ugMain.InitializeRow
If e.Row.Cells("Delays").Value = 0 Then
e.Row.Cells("Indicator").Value = Image.FromFile("Images\\RoundedGreen.png")
Else
e.Row.Cells("Indicator").Value = Image.FromFile("Images\\RoundedRed.png")
End If
End Sub
答案 0 :(得分:3)
Image.FromFile
并不慢,但是你为每条记录调用它的方式,可能会对你造成一些性能损失。您正在调用与每行的文件系统交互的方法。
您可以使用以下任一选项,而不是从网格中的每一行从文件系统加载这些图像:
您可以加载一次这些图像,然后将它们放在List<Image>
中,然后每次需要时,按索引从列表中获取图像,Images[0]
。如果您想按键访问这些图片,可以使用 Plutonix 中提到的Dictionary<string , Image>
,然后您可以使用Images["RoundedGreen"]
获取图片。
您可以使用应用程序的Resources.Resx
文件在编译时存储这些图像,而不是依赖文件系统上的图像。然后,每次您需要在运行时使用这些图像时,您可以使用My.Resources.RoundedGreen
找到它们。
示例强>
例如,您可以在表单级别定义Images
成员:
Dim Images As Dictionary(Of String, Image) = New Dictionary(Of String, Image)()
然后在某处,例如在Load
形式的事件中,加载图像:
Images.Add("RoundedGreen", Image.FromFile("Path to RoundedGreen image"))
Images.Add("RoundedRed", Image.FromFile("Path to RoundedRed image"))
然后,只要您需要使用这些图片,就可以通过以下方式从Images
成员获取这些图片:Images("RoundedGreen")