Screenshot von der Form machen

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von SpaceyX.

    Screenshot von der Form machen

    Hallo,

    ich suche schon die ganze Zeit nach einer Lösung um meine Form zu screenen. Ich finde einfach keine Lösung die mir hilft.

    Es wäre nett wenn mir jemand hilft. Es muss nichts besonderes sein und es können auch die Ränder des Programmes mit auf dem Screen sein, Hauptsache nicht noch Teile vom Hintergrund. (Desktop o.Ä.)

    Es muss nur ein Screenshot vom Programm gemacht werden und das Bild soll auf den Desktop gespeichert werden Bzw. den Pfad lege ich dann noch fest.

    MfG Onion
    Probiers mal so oder so ähnlich:

    VB.NET-Quellcode

    1. Sub FormScreenShot()
    2. Dim bmp As Drawing.Bitmap = New Drawing.Bitmap(Size.Width, Size.Height)
    3. Using img As Drawing.Graphics = Drawing.Graphics.FromImage(bmp)
    4. img.CopyFromScreen(New Drawing.Point(Location.X, Location.Y), New Drawing.Point(0, 0), Size, 0)
    5. End Using
    6. bmp.Save(My.Computer.FileSystem.SpecialDirectories.Desktop)
    7. End Sub
    (können noch Fehler drin sein, habs nicht ausprobiert)

    BjöNi schrieb:

    Probiers mal so oder so ähnlich:

    VB.NET-Quellcode

    1. Sub FormScreenShot()
    2. Dim bmp As Drawing.Bitmap = New Drawing.Bitmap(Size.Width, Size.Height)
    3. Using img As Drawing.Graphics = Drawing.Graphics.FromImage(bmp)
    4. img.CopyFromScreen(New Drawing.Point(Location.X, Location.Y), New Drawing.Point(0, 0), Size, 0)
    5. End Using
    6. bmp.Save(My.Computer.FileSystem.SpecialDirectories.Desktop)
    7. End Sub
    (können noch Fehler drin sein, habs nicht ausprobiert)

    Danke dir, aber da erhalte ich eine Fehlermeldung.

    VB.NET-Quellcode

    1. img.CopyFromScreen(New Drawing.Point(Location.X, Location.Y), New Drawing.Point(0, 0), Size, 0)


    Die ganze Zeile wird farbig markiert und das hier ist die Fehlermeldung:

    "Der Wert des Arguments value (0) ist für den Enumerationstyp CopyPixelOperation ungültig.
    Parametername: value"

    Mit anderen Werten geht es aber auch nicht.
    Vl. musst du statt 0 am Ende 66 bzw.

    VB.NET-Quellcode

    1. Drawing.CopyPixelOperation.Blackness
    verwenden.

    BjöNi schrieb:

    Vl. musst du statt 0 am Ende 66 bzw.

    VB.NET-Quellcode

    1. Drawing.CopyPixelOperation.Blackness
    verwenden.

    Dann wird mir die Zeile

    VB.NET-Quellcode

    1. bmp.Save(My.Computer.FileSystem.SpecialDirectories.Desktop)


    farbig markiert mit der Fehlermeldung:

    "Allgemeiner Fehler in der GDI+"
    Egal ob ich 66 oder Drawing.CopyPixelOperation.Blackness eingebe.

    Da muss natürlich auch noch nen Dateiname dahinter also z.B.

    VB.NET-Quellcode

    1. bmp.Save(My.Computer.FileSystem.SpecialDirectories.Desktop & "\bla.jpg")

    BjöNi schrieb:

    bmp.Save(My.Computer.FileSystem.SpecialDirectories.Desktop & "\bla.jpg")

    Ah jo, das ist natürlich logisch. Habe ich vergessen. Soweit war ich auch schonmal, nun wird eine Bilddatei erstellt, allerdings ist sie ganz schwarz. Das ganze entspricht auch der Größe meiner Form, aber wie gesagt halt ganz schwarz und so ist meine Form natürlich nicht.


    Fehlt mir vieleicht ein Verweis auf eine Dll?
    Nein, sorry, hab dir vorhin mit 66 bzw. Blackness Quatsch erzählt (logisch, bei Blackness wirds schwarz ;))
    Da müsste hin 13369376 bzw. SourceCopy hin - habs inzwischen ausprobiert - funktioniert.

    BjöNi schrieb:

    Nein, sorry, hab dir vorhin mit 66 bzw. Blackness Quatsch erzählt (logisch, bei Blackness wirds schwarz ;))
    Da müsste hin 13369376 bzw. SourceCopy hin - habs inzwischen ausprobiert - funktioniert.

    Vielen Dank, mit 13369376 hat es funktioniert, mit SourceCopy nicht, da wurde mir gemeldet es sei nicht deklariert.

    Darf ich fragen warum dort 13369376 reingeschrieben werden muss? Hat diese Zahl bei dem Thema eine größere Bedeutung?

    BjöNi schrieb:

    Nein, es müsste dann halt dementsprechend Drawing.CopyPixelOperation.SourceCopy heißen
    Achso. :rolleyes: Und was hat es mit dieser Zahl auf sich? Das würde mich mal interessieren, denn mit anderen Zahlen hat es nicht funktioniert. Bei 0 oder 1 Beispielsweise kam eine Fehlermeldung, bei 66 wurde es schwarz und mit 13369376 hat es funktioniert.
    Das ist der initializer, vmtl. verstehst du es besser, wenn du dir das hier durchliest.

    MSDN schrieb:

    initializer
    Optional. Ausdruck, der zur Kompilierungszeit ausgewertet und diesem Member zugewiesen wird.
    Kann ich aber selber nicht so genau erklären, vl. jemand anders hier im Forum... ;)
    Hallo Leute,

    Hab die Screenshot Funktion mal in ein Projekt eingebaut aber jetzt hab ich noch ne Frage:

    Wie kann ich noch nen SaveFileDialog mit da rein bringen, also das der Name der zu speichernden Datei vom Benutzer selbst geschrieben werden kann?

    Hab den SaveFileDialog schon drin aber die Datei wird nicht gespeichert

    Beste Grüße
    Nur der Vollständigkeit wegen. Die Klasse Form hat eine Funktion DrawToBitmap

    Der Name ist bei dieser Funktion Programm. Kann leider atm. kein Beispiel liefern, da ich in der Arbeit bin.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o