Announcement

Collapse
No announcement yet.

Screenshot (2 Monitore) als jpg mit bestimmter qualität speichern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Screenshot (2 Monitore) als jpg mit bestimmter qualität speichern

    Hi,

    ich bin neu hier, na ja schon viel gelesen, aber noch nie gefragt.
    Nun zum Problem:

    Es soll bei klick auf einen Button, ein Screenshot von einem oder wenn vorhanden 2 Monitoren erzeugt werden. Dieser soll dann im Applikationspfad mit einer bestimmten Qualität als jpg abgelegt werden.

    Ich habe schon sein einer halben Ewigkeit nach einer Lösung gesucht, aber noch keine brauchbare gefunden.
    Ich hoffe, dass Ihr mir helfen könnt
    Danke schon mal

    Gruß Patrick

  • #2
    Komme nun der Sache immer näher.
    Nun wird der Screenshot bei 2 Monitoren richtig erstellt.
    Allerdings wenn nur ein Monitor angeschlossen ist bricht das Prog ab.
    Es Fehlt nur noch eine Prüfung, ob ein 2ter angeschlossen ist.

    Code:
    Imports System.IO
    Imports System.Drawing.Imaging
    
    
    Module Funktionen
     Sub Screenshot_Test2()
            Dim rect As Rectangle = Screen.AllScreens(0).Bounds
            Dim rect2 As Rectangle = Screen.AllScreens(1).Bounds 'oder 1 für den zweiten Bildschirm
            Dim ici() As ImageCodecInfo = ImageCodecInfo.GetImageEncoders()
            Dim ep As New EncoderParameters(1)
    
            rect = Rectangle.Union(rect, rect2)
            ep.Param(0) = New EncoderParameter(Encoder.Quality, 25) '25% Qualität
    
            Using bmp As Bitmap = New Bitmap(rect.Width, rect.Height), g As  _
            Graphics = Graphics.FromImage(bmp)
                g.CopyFromScreen(0, 0, 0, 0, bmp.Size)
                bmp.Save(Application.StartupPath & "\Screenshot.jpg", ici(1), ep)
            End Using
    
        End Sub
    End Module

    Comment


    • #3
      Lösung:
      Code:
      Imports System.Drawing.Imaging
      Module Funktionen
      Sub Screenshot_Test2()
              Dim rect As Rectangle = Screen.AllScreens(0).Bounds
              Dim ici() As ImageCodecInfo = ImageCodecInfo.GetImageEncoders()
              Dim ep As New EncoderParameters(1)
       
              If Screen.AllScreens().Count >= 2 Then
                  Dim rect2 As Rectangle = Screen.AllScreens(1).Bounds 'oder 1 für 
                  ' den zweiten Bildschirm
                  rect = Rectangle.Union(rect, rect2)
              End If
       
              ep.Param(0) = New EncoderParameter(Encoder.Quality, 25) '25% Qualität
       
              Using bmp As Bitmap = New Bitmap(rect.Width, rect.Height), g As  _
              Graphics = Graphics.FromImage(bmp)
                  g.CopyFromScreen(0, 0, 0, 0, bmp.Size)
                  bmp.Save(Application.StartupPath & "\Screenshot.jpg", ici(1), ep)
              End Using
       
          End Sub
      End Module

      Comment

      Working...
      X