Image.FromFile 非常非常慢
Image.FromFile is very very slow
我正在尝试在 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
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")
我正在尝试在 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
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")