Inhalt einer Form "verfilmen"

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von HenryV.

    Inhalt einer Form "verfilmen"

    Hallo!

    Ich habe mehrere Steuerelemente, die durch einen Timer ihre Positionen verändern. Ist es möglich diese zu "verfilmen"? Die untere Befehlszeile entspricht meiner Vorstellung, wie das funktionieren könnte, ohne zu wissen, ob es einen entsprechenden Befehl gibt, der das Video erstellt.

    Quellcode

    1. Me.Image.Save("c:\Bild.jpg", Imaging.ImageFormat.Jpeg)
    2. MultiMediaDevice.Video.Add("c:\Bild.jpg", "c:\Video.mp4", VideoFormat.MP4)
    Hey, ist zwar schon uralt, aber genau das gab es damals schon hier im Forum, bloß als AVI.

    AVI erstellen mit Malisch's AVI-Lib

    Die beschriebene Lib gibt es hier noch

    avilib.dll - hat die noch wer?


    Meine Website:
    www.renebischof.de

    Meine erste App (Android):
    PartyPalooza
    Danke für die Schnelle Antwort.

    un habe ich folgendes Problem: Da Image kein Member von Form1 ist, habe ich eine PictureBox auf die Form1 aufgelegt, die so groß ist, wie Form1. Dann habe ich die mehrere PictureBoxen zur Laufzeit in der aufgelegten PictureBox erstellt. In die kleineren PictureBoxen sind nun kleine Bilchen geladen.

    Nun sträubt sich aber die große PictureBox1 die kleineren PictureBoxen als Gesamtbild zu erkennen (Eigenschaft Image bleibt leer), weshalb der Befehl

    VB.NET-Quellcode

    1. PictureBox1.Image.Save(My.Application.Info.DirectoryPath & "\Video\Bild" & FrameNr & ".png", Imaging.ImageFormat.Png)

    mit der Fehlermeldung "Ein Ausnahmefehler des Typs "System.NullReferenceException" ist aufgetreten." nicht ausgeführt werden kann.

    Nun tun sich zwei Fragen auf, wie das Problem angegangen werden kann:
    1. Wie kriege ich die große PictureBox dazu, die kleinen PictureBoxen als Gesamtbild in der Eigenschaft Image zu erkennen?
    2. Wie mache ich am Ende jeden Timer-Durchlaufs einen automatischen Screenshot vom Fensterinhalt?
    @Selter98 Zu 1.: Du musst die Einzelbildchen in einer einzigen Bitmap-Instanz zusammensetzen und diese Bitmap Deiner PictureBox-Image-Property zuweisen.
    2. Diese Bitmap ist dann wohl Dein Fensterinhalt.
    Finde die richtige Überlagerung von Graphics.DrawImage():
    learn.microsoft.com/de-de/dotn…?view=dotnet-plat-ext-7.0
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Selter98
    Alternativ kannst du die Control.DrawToBitmap(Bitmap, Rectangle) Methode versuchen.

    VB.NET-Quellcode

    1. For FrameNr As Integer = 0 To 100
    2. Dim bmp As New Bitmap(Me.Width, Me.Height)
    3. Me.DrawToBitmap(bmp, New Rectangle(0, 0, Me.Width, Me.Height))
    4. bmp.Save($"test_{FrameNr:D3}.png", Imaging.ImageFormat.Png)
    5. Next