Dynamic Controls (on same thread)
Dim pictWeather As New PictureBox
Dim pictTemp As New PictureBox
Dim pictDayOfWeek As New PictureBox
pictWeather.Size = New Size(32 + 10, 32)
pictTemp.Size = New Size(20, 14)
pictDayOfWeek.Size = New Size(19, 14)
pictWeather.Image = My.Resources.ResourceManager.GetObject((GetResourceID(Split(sString, "|")(0))))
pt.X = (pictWeather.Width * x) '+10
pt.Y = pictWeather.Height * 0
'createTextImage
pictWeather.Location = pt
' pt.Y = pt.Y * 1
Panel3.Controls.Add(pictWeather)
pt.X = (pictWeather.Width * x) '+10
pt.Y = pictWeather.Height * 1
pictTemp.Location = pt
pictTemp.Image = ((createTextImage(Split(sString, "|")(1), Color.Black)))
Panel3.Controls.Add(pictTemp)
pt.X = (pictWeather.Width * x) '+10
pt.Y = pictWeather.Height + pictTemp.Height + 5
pictDayOfWeek.Location = pt
pictDayOfWeek.Image = createTextImage(Strings.Left(Now.AddDays(x).DayOfWeek.ToString, 2), Color.Black)
Panel3.Controls.Add(pictDayOfWeek)
Add Resources to List
Dim runTimeResourceSet As Object
Public lstOfWeatherIcons As New List(Of String)
runTimeResourceSet = My.Resources.ResourceManager.GetResourceSet(System.Globalization.CultureInfo.CurrentCulture, False, True)
For Each dictEntry In runTimeResourceSet
If (dictEntry.Value.GetType() Is GetType(Bitmap)) Then
Console.WriteLine(dictEntry.Key)
lstOfWeatherIcons.Add(dictEntry.Key)
End If
Next
Timer example to update images
Private Sub Timer3_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick
Try
pictWeather.Image = My.Resources.ResourceManager.GetObject((GetResourceID(GetCurrentWeather())))
pictTemp.Image = createTextImage(GetCurrentTemp, Color.White)
Catch ex As Exception
pictWeather.Image = Nothing
pictTemp.Image = createTextImage("-", Color.White)
End Try
End Sub
Get Resource ID Example (dynamically)
Function GetResourceID(sText As String) As String
Dim sResult As String = lstOfWeatherIcons.Find(Function(value As String) Strings.Left(value, 5) = "_" & sText)
Return sResult
End Function
Garbage Collection
GC.collect