Terminator2
Erfahrenes Mitglied
Hallo,
In meinem Programm habe ich in einem Graphics Objekt gezeichnet und dieses anschließend als Datei gespeichert (uA. um Speicherplatz zu sparen). Die Bilder haben eine Auflösung von 2800x3400 Pixeln. Als JPEG gespeichert beträgt der Platzverbrauch jedoch lediglich 272kB. In meinem Formular wird das aktuelle Bild in einer PictureBox angezeigt. In einem Array wird eine History der Bilder mit Dateipfad angelegt. Alle Bilder werden in einem weiteren Formular in je einer Picturebox angezeigt.
Mein Programm nimmt jedoch viel zu viel Arbeitsspeicher in Anspruch:
0 Bilder: 13,7MB
1 Bild: 99MB (2 Pictureboxen)
2 Bilder: 212MB (3 Pictureboxen)
Die History funktioniert wie folgt:
Die Bilder könnten beim Anzeigen in der History auch verkleinert werden, falls das was bringt.
Vielen Dank im vorraus!
In meinem Programm habe ich in einem Graphics Objekt gezeichnet und dieses anschließend als Datei gespeichert (uA. um Speicherplatz zu sparen). Die Bilder haben eine Auflösung von 2800x3400 Pixeln. Als JPEG gespeichert beträgt der Platzverbrauch jedoch lediglich 272kB. In meinem Formular wird das aktuelle Bild in einer PictureBox angezeigt. In einem Array wird eine History der Bilder mit Dateipfad angelegt. Alle Bilder werden in einem weiteren Formular in je einer Picturebox angezeigt.
Mein Programm nimmt jedoch viel zu viel Arbeitsspeicher in Anspruch:
0 Bilder: 13,7MB
1 Bild: 99MB (2 Pictureboxen)
2 Bilder: 212MB (3 Pictureboxen)
Die History funktioniert wie folgt:
Code:
Public PB() As PictureBox
Public Sub ShowImages()
Dim i As Integer
Try
For i = 0 To PB.Length - 1
PB(i).Hide()
PB(i).Dispose()
Next
Catch ex As Exception
End Try
Array.Resize(PB, 0)
For i = 0 To MdlImages.ListIMG.Bild.Count - 1
Try
Array.Resize(PB, PB.Length + 1)
Catch ex As Exception
Array.Resize(PB, 1)
End Try
PB(PB.Length - 1) = New PictureBox
With PB(PB.Length - 1)
.Parent = FlowLayoutPanel1
.Width = FlowLayoutPanel1.Width - 25
.Height = .Width / 4 * 3
.SizeMode = PictureBoxSizeMode.Zoom
.Image = Image.FromFile(MdlImages.ListIMG.Bild.Item(i).BildPfad)
.BorderStyle = BorderStyle.FixedSingle
AddHandler .DoubleClick, AddressOf PB_DblClick
Me.FlowLayoutPanel1.Controls.Add(PB(PB.Length - 1))
End With
Next
End Sub
Die Bilder könnten beim Anzeigen in der History auch verkleinert werden, falls das was bringt.
Vielen Dank im vorraus!