[VB] "virtuelle Picture-Boxen" --- wie ?

Clocker 2800+

Lt. Commander
Registriert
Apr. 2007
Beiträge
1.409
Hallo,

ich habe einen Code (Visual Basic), mit dem man mehrere Bilder als AVI-Video abspeichern kann.
Aber es geht halt nur einmal, wenn man die ganzen Bilder angegeben hat.

(Also nicht, erstes Bild als AVI abspeichern, datei schließen, AVI datei wieder öffnen, nächstes bild hinzufügen, wieder schließen, ...)

Sondern nur als einmaliger "Rutsch" !

---
Jetzt will ich aber ganz viele Screenshots vom Desktop machen, diese als Bilder auf der Festplatte abspeichern, und dann als AVI Video abspeichern.

Das Problem ist nur, wenn ich ganz viele Screenshots mache (Abstand 1 Millisekunde), sodass es ein flüssiges Video werden sollte, wird die Festplatte nicht fertig, die einzelnen Bilder abzuspeichern. D.h. sie lässt einfach mal Bilder aus, die sie nicht schafft.
---

Die Lösung wäre, wenn man "virtuelle" PictureBoxen auf dem Formular erstellt. D.h. eine "richtige" am Anfang, und immer, wenn man einen weiteren Screenshot zum abspeichern hätte, einfach eine "virtuelle" Picturebox erstellen, indem dann das Bild (Screenshot) kommt.

Geht es vielleicht mit: Dim vituellePicture1 As New StdPicture oder so (kommt aber ein Fehler) !

Wichtig ist, dass man beliebig viele, und immer wieder nachträglich welche erstellen kann.


Wer kann mir helfen, oder hat eine Code-Idee für Visual Basic?
P.S. ich brauch das so schnell wie möglich :)
 
Zuletzt bearbeitet:
Kleines Beispiel in VB '08 (ich hasse diese Sprache..)
Code:
Dim imgs As New System.Collections.ArrayList
For i As Integer = 0 To 10
   Dim img As New System.Drawing.Bitmap(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height)
   Dim g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(img)
   g.CopyFromScreen(System.Windows.Forms.Screen.PrimaryScreen.Bounds.X, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Y, 0, 0, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Size, System.Drawing.CopyPixelOperation.SourceCopy)
   imgs.Add(img)
Next
 
So ist es ein wenig verbessert:

Code:
Dim imgs As New System.Collections.ArrayList
[B]Dim i As Integer
For i = 0 to 10[/B]
   Dim img As New System.Drawing.Bitmap(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height)
   Dim g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(img)
   g.CopyFromScreen(System.Windows.Forms.Screen.PrimaryScreen.Bounds.X, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Y, 0, 0, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Size, System.Drawing.CopyPixelOperation.SourceCopy)
   imgs.Add(img)
Next

Aber das "Dim imgs As New System.Collections.ArrayList" geht nicht, da musste vielleicht nochmal schauen. (Kommt immer: "Benutzerdefinierter Typ nicht definiert").
Es geht nur "as new" Form1, Form, StdPicture, ...
 
Ich habs getestet. Hast du die Referenzen gesetzt ?
System.Collections und System.Drawing und System.Windows.Forms braucht man ... und mein Code war genauso richtig wie deiner, ich habe ihn getestet.
 
Keine Ahnung, im Englischen VS08 ist es unter "Project>Add Reference..."
 
Zuletzt bearbeitet: (,)
Zurück
Oben