Das Projekt 2 demonstriert vorwiegend den Einsatz von Konstanten, Eigenschaften und Methoden der Klasse Clipboard:
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:
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()