Visual Basic 08: Bilder vorladen

Hallo an alle,
ich hab folgendes Problem. Ich möchte eine Bilderfolge schnell hintereinander anzeigen lassen. Das funktioniert auch ganz gut. Ich mache das indem ich ein Bitmap erstelle auf das gezeichnet wird:

Dim b As New Bitmap(320,240, PixelFormat.Format24bppRgb)

darauf lege ich dann ein Graphics Objekt:

Dim g As Graphics

g = Graphics.FromImage(b)

und dann erstelle in ein Bitmap aus der vorhandenen Imagedatei in einem Ordner die ich dann auf das andere Bitmap draufzeichne und anzeigen lasse:

Dim b2 As Bitmap(„bla“ & x & „.png“, 200, 200)
g.DrawImage(b2, 50,50,200,200)

PictureBox1.Image = b

Das funktioniert auch alles soweit. Nur habe ich festgestellt das die Animation schneller läuft je öfter sie abgespielt wird. Das liegt warscheinlich daran das das Programm nun schon alles fertig geladen hat und schneller darauf zugreifen kann. Nun meine Frage, ist es möglich eine große Anzahl von Bildern schon beim Start vorzuladen so das das nicht mehr passiert? Für eine Antwort wär ich sehr dankbar…

Gruß
Wingman223

Da keiner wohl so wirklich weiß was ich damit meine, frag ich mal anders. Ist es möglich die Bilddateien auf den RAM zu schreiben so das, dass Programm schneller darauf zugreifen kann? Für eine Antwort wär ich sehr dankbar…

Gruß
Wingman223

Hallo!

Jedesmal, wenn Du mit dem von Dir verwendeten Konstructor von Bitmap eine neue Instanz erzeugst, wird das Bild „ins RAM“ geladen.
Natürlich kannst Du auch bevor Du die Wiedergabe startest, eine ganze Reihe von Bitmaps instanzieren und laden, bspw. indem Du statt einem einzelnen Bitmap, in welches Du jeweils ein Bild lädst, ein Array von Bitmaps verwendest.

Gruß,
Martin

1 Like

Oh danke ich hatte da immer ein Brett vorm Kopf. Klar wenn man immer nur nacheinander ein neues Bitmap erzeugt dann dauert es, eine Animation bis er jedes Bild in den „RAM geladen“ hat.
Ein Array kam mir da auch in den Sinn nur wusste ich nicht wie man das realisieren sollte. So geht es ja nicht:

Dim i(5) As New Bitmap

da sagt er ja geht nicht weil man mit kein Array zu einem Bitmap machen kann. Hast recht so gehts:

Dim i(5) As Bitmap
i(0) = New Bitmap(„bla.png“)

klar XD Danke hast mir da den richtigen Denkanstoß gegeben.

Gruß
Wingman223