Bilder pre-loaden bzw. PictureBox mit änderndem Inhalt ?

  • Themenstarter Themenstarter Seed2k5
  • Beginndatum Beginndatum
S

Seed2k5

Hi

Hmm..ich weiss nicht recht ob der Titel verständlich war, aber ich hoffe, daß er zumindest ein paar Leute neugierig gemacht hat :)
Also, ich habe folgendes Problem: Ich habe ein Formular. Auf diesem befinden sich 9 PictureBoxen. Am besten stellt man sich daß wie eine Art Slot-Machine vor, denn die Funktionsweisse ist die selbe. Ich habe nun 10 Bilder, die zufällig in den Boxen wiedergegeben werden sollen. Das ganze soll mit einer Art "Animation" versehen sein, also es sollen alle Möglichen Bilder immer kurz angezeigt werden, und dann bei einem zufällig ausgewählten stehenbleiben (Wie eine Slot-Machine also).
Meine Frage ist nun, wie kann ich die Bilder vorlagen, und dann den Pictureboxen zuweisen ? Ich weiss, ich könnte eine Schleife machen, in der (mit Delay) immer ein Bild geladen wird, aber bei 9 Boxen und 10 Bildern, würde das wohl etwas langsam werden immer auf die Platte zugreifen zu müssen. Gibt es da nicht eine Möglichkeit einfach die Bilder zu Preloaden und dann darauf zuzugreifen ? Schon mal Danke im vorraus, und wenn irgendwas unklar ist, einfach Nachahken :)

gruss
Seed
 
Man kann Bild-Variablen anlegen und in diese Bilder laden:
Code:
Dim VorladeBild As IPictureDisp
Set VorladeBild = LoadPicture("C:\Deinbild.jpg")
Bild dann aus der Variable laden:
Code:
PictureBoxWasWeißIch.Picture = VorladeBild
 
Hallo alle zusammen,

die Antwort von Shakie ist absolut korrekt. Ich habe nur noch mal in meinen alten Testprogies rumgekrammt (mir deuchte, dass ich so was schon mal gemacht habe) und nach einer kleinen Modifikation würde meine Lösung so aussehen:

Option Explicit

Private mPictures(10) As StdPicture

Private Sub Command1_Click()
[tab]Timer1.Enabled = True[/tab]
End Sub

Private Sub Form_Load()
[tab] Dim nCounter As Integer

For nCounter = 1 To 10
Set mPictures(nCounter) = LoadPicture("D:\Bilder\Reihe_2\PIC_00" & Format$(nCounter, "0#") & ".JPG")
Next nCounter[/tab]
End Sub

Private Sub Timer1_Timer()
[tab]Dim nCounter As Integer
Dim nRandom As Integer

Randomize Time
For nCounter = 1 To 10
nRandom = Rnd() * 10
nRandom = IIf(nRandom = 0, 1, nRandom)
pic(nCounter).PaintPicture mPictures(nRandom), 0, 0, pic(nCounter).ScaleWidth, pic(nCounter).ScaleHeight, _
0, 0, _
ScaleX(mPictures(nRandom).Width, vbHimetric, vbPixels), _
ScaleY(mPictures(nRandom).Height, vbHimetric, vbPixels)
Next nCounter[/tab]
End Sub

Die Pictureboxen sind von 1 bis 10 indiziert. Der Scalemode ist auf Pixels eingestellt.
Falls schon bekannt einfach ignorieren :)

Gruß
Das Orakel
 
Zuletzt bearbeitet:
Zurück