User Tools

Site Tools


k20:k20.4:k20.4.2:start

20.4.2 Projekt 2 – Demonstrationsprogramm Clipboard Bilder

Das Projekt 2 demonstriert vorwiegend den Einsatz von Konstanten, Eigenschaften und Methoden der Klasse Clipboard:

B1

Abbildung 20.4.2.1: Demonstrationsprogramm Klasse Clipboard

Man kann Sie nur ermuntern, mit dem Programm heftig zu experimentieren. Dazu gehört auch das Einfügen selbst aufgenommener Screenshots zum Beispiel:

  • mit der Tasten-Kombination CTRL+Drucken-Taste oder
  • mit den Programmen Shutter oder
  • KSnapShot oder
  • mit dem Konsolenprogramm Gnome-ScreenShot mit “gnome-screenshot -w -b -c –delay=1”.

Für ein erstes Erproben sollten Sie die Button in der angegebenen Reihenfolge drücken und dabei die Anzeigen in den beiden Picture-Boxen sowie im Fenster-Titel beobachten. Den Button 6 sollten Sie dann mindestens 3x drücken.

Der Quelltext des Projekts 2 wird vollständig angegeben. Besondere Beachtung sollten Sie der Funktion DesktopGrab(iModus As Integer) schenken, die Ihnen die Möglichkeit gibt, Screenshots des Desktops oder des aktiven Top-Level-Fensters – also des Programm-Fensters – aufzunehmen und in einer Picturebox anzuzeigen. Für das Argument iModus=0 wird ein Screenshot des gesamten Desktops als Funktionswert (Datentyp Picture) zurückgegeben. Für alle anderen Modi iModus > 0 erhalten Sie einen Screenshot des Programmfensters.

Kompletter Quelltext für das Demonstrationsprogramm 'Clipboard Bilder':

' Gambas class file
' Es wird nur EIN Objekt im ClipBoard gespeichert.
 
Public Sub Form_Open()  
  FMain.Center
  FMain.Resizable = False
  If Clipboard.Type <> Clipboard.None Then ' Clipboard nicht leer?
     FMain.Caption = "ClipBoard MIME-Type: " & Clipboard.Formats[0]
  Endif ' ClipBoard.Format  
End ' Form_Open
 
Public Sub btnShowPicture_Click()
  PictureBox1.Picture = Picture.Load("Pictures/fraktal_1.jpg")
End ' btnShowPicture_Click()
 
Public Sub btnCopyPicture_Click()  
  If PictureBox1.Picture <> Null Then
     Clipboard.Copy(PictureBox1.Picture.Image)
     FMain.Caption = "ClipBoard MIME-Type: " & Clipboard.Formats[0]
  Endif ' PictureBox1.Picture <> Null ?
 
End ' btnCopyPicture_Click()
 
Public Sub btnPastePicture_Click()
  If Clipboard.Type = Clipboard.Image Then
     PictureBox2.Picture = Clipboard.Paste().Picture ' Klammer beachten → Funktion
   ' PictureBox2.Picture = Clipboard.Paste("image/tiff").Picture ' Option: Vorgabe MIME-Typ
     FMain.Caption = "ClipBoard MIME-Type: " & Clipboard.Formats[0]
  Endif ' Clipboard.Type = Clipboard.Image ?  
  txaFormats.Clear
End ' btnPastePicture_Click()
 
Public Sub btnScreenshotDesktop_Click()  
 
  PictureBox2.Picture = DesktopGrab(0) ' Screenshot vom Desktop
  Clipboard.Copy(PictureBox2.Picture.Image)
  FMain.Caption = "ClipBoard - Screenshot MIME-Type: " & Clipboard.Formats[0]
  txaFormats.Clear
 
End ' btnScreenshotDesktop_Click()  
 
Public Sub btnScreenshotTopLevelWindow_Click()   
 
  PictureBox2.Picture = DesktopGrab(1)
  Clipboard.Copy(PictureBox2.Picture.Image)
  FMain.Caption = "ClipBoard - Screenshot MIME-Type: " & Clipboard.Formats[0]
  txaFormats.Clear
 
End ' btnScreenshotCurrentWindow_Click()
 
Public Sub btnShowFormats_Click()
  Dim sElement As String
 
  txaFormats.Clear
  For Each sElement In Clipboard.Formats
      txaFormats.Insert(sElement & gb.NewLine)
  Next ' sElement
 
End ' btnShowFormats_Click()
 
Public Sub btnClear1_Click()
  PictureBox1.Picture = Null
  txaFormats.Clear
  PictureBox1.Refresh
End ' btnClear1_Click()
 
Public Sub btnClear2_Click()
  PictureBox2.Picture = Null
  txaFormats.Clear
  PictureBox2.Refresh
End ' btnClear2_Click()
 
Public Sub btnClearClipboard_Click()
  Clipboard.Clear
  FMain.Caption = "ClipBoard"
  txaFormats.Clear
End ' btnClearClipboard_Click()
 
Public Function DesktopGrab(iModus As Integer) As Picture
  Dim DTWindow As DesktopWindow
  Dim myDesktopPicture As Picture
 
  DTWindow = New DesktopWindow(Desktop.ActiveWindow) 
 
  If iModus = 0 Then 
     Me.Visible = False
       Wait 0.1
       myDesktopPicture = Desktop.Screenshot()
     Me.Visible = True
     Return myDesktopPicture
  Else
     Return Desktop.Screenshot(DTWindow.X, DTWindow.Y, DTWindow.W, DTWindow.H)  
  Endif ' iModus = 0 ?
 
End ' DesktopGrab(..)
 
Public Sub Form_Close()
  If Not (Clipboard.Type = Clipboard.None) Then Clipboard.Clear
  FMain.Close
End ' Form_Close()

Download

The website uses a temporary session cookie. This technically necessary cookie is deleted when the browser is closed. You can find information on cookies in our privacy policy.
k20/k20.4/k20.4.2/start.txt · Last modified: 02.07.2018 (external edit)

Page Tools