Zum Inhalt springen
Der Guide für ein smartes Leben.
Neues in der Kaffepause

Aktiven Bildschirminhalt kopieren

Autoren: Redaktion pcmagazin und Peter Schnoor • 1.3.2010 • ca. 2:10 Min

Aktiven Bildschirminhalt kopieren Zu diesem Formular für den Bildschirmschoner brauchen Sie den Programmcode. Zum Kopieren des Bildschirms verschaffen Sie sich eine immer wieder verwendbare Funktion. Wichtig ist es, den Bildschirm als Bitmap zu kopieren. Zudem ermitteln Sie die aktuelle Höhe und...

Aktiven Bildschirminhalt kopieren

Zu diesem Formular für den Bildschirmschoner brauchen Sie den Programmcode. Zum Kopieren des Bildschirms verschaffen Sie sich eine immer wieder verwendbare Funktion. Wichtig ist es, den Bildschirm als Bitmap zu kopieren. Zudem ermitteln Sie die aktuelle Höhe und Breite des Bildschirms, bevor der Kopiervorgang beginnt. Der Code hierzu ist schnell geschrieben:

Public Function KopiereBildschirm()
As Bitmap ,Aktiven Bildschirminhalt
,als Hintergrund AktScreen =
Screen.PrimaryScreen.Bounds Dim screenBitmap As New Bitmap(AktScreen.Width, AktScreen.Height, PixelFormat.Format32bppArgb) Using g As Graphics =
Graphics.FromImage(screenBitmap) , Kopiere den Bildschirminhalt g.CopyFromScreen(AktScreen.X, AktScreen.Y, 0, 0, AktScreen.Size,
CopyPixelOperation.SourceCopy) End Using Hintergrund = screenBitmap Return screenBitmap End Function

Jetzt sorgen Sie dafür, dass beim Laden des Bildschirmschoners der Hintergrund mit Hilfe der Funktion gefüllt wird. Zusätzlich soll das Hintergrundbild auch in die PictureBox2 übertragen werden. Aktivieren Sie dazu die Form1 und wählen im Fenster der Eigenschaften für das Formular die Ereignisse aus (Symbol: Blitz). Klicken Sie dort doppelt auf das Ereignis Load. Das eingeblendete Codefenster erweitern Sie um die Einträge:

Me.WindowState = System.Windows.Forms.FormWindowState.MaximizedMe.PictureBox2.Image =
KopiereBildschirm()Me.BackgroundImage = Hintergrund

Die Subroutine DrawShape steuert den Bildschirmschoner. Hierzu dimensionieren Sie zunächst die Variablen für die Breite und Höhe des Bildschirms sowie für Integerwerte, die der Zufallsgenerator verlangt. Eine Try-Anweisung in der Prozedur fängt Fehler ab. Die Darstellung der sich bewegenden PictureBox2 berechnen Sie mit einer Do While-Schleife. Abhängig von der Platzierung und der Größe der PictureBox2 wird die Schleife durchlaufen.

Die Schleife endet, wenn die PictureBox2 einen Bildschirmrand erreicht. Eine Unterbrechung findet auch dann statt, wenn die PicureBox2 zu klein oder zu groß wird. Außerdem findet eine Unterbrechung statt, wenn sich die aktuelle Mausposition um mehr als zwei Punkte bewegt. Den vollständigen Code finden Sie auf der Heft-DVD:

Do While Me.PictureBox2.Location.X < Me.Width - PictureBox2.Width _

Damit das Hintergrundbild gekippt und gedreht wird, bauen Sie eine If-Anweisung ein.

If FlipFor = 1 Then Hintergrund.RotateFlip(RotateFlipType.Rotate90FlipY)

Der Timer sorgt dafür, dass die Prozedur DrawShape alle 100 Millisekunden ausgeführt wird. Die Zeit haben Sie ja bereits über die Eigenschaft Intervall festgelegt. Aktivieren Sie zum Programmieren des Timers zunächst die Entwurfsansicht des Formulars. Klicken Sie dann auf das Timer-Steuerelement im unteren Fensterbereich. Wechseln Sie im Eigenschaftsfenster auf Ereignisse und klicken Sie dann doppelt auf das Ereignis Tick.

Dort geben Sie den Namen der Prozedur DrawShape() ein. Jetzt müssen Sie noch dafür sorgen, bei Mausbewegungen über 10 Punkte die Schaltflächen für den RSS-Reader und das Beenden des Programms einzublenden. Dazu gehen Sie wieder in die Entwurfsansicht des Formulars und klicken dort doppelt auf das Ereignis MouseMove. Mit einer IF-Abfrage stellen Sie fest, ob die Mausposition sich verändert hat.

If Math.Abs(e.X - Me.m_MouseLocation.X) > 50 Or _ Math.Abs(e.Y - Me.m_MouseLocation.Y) > 50 Then Button1.Visible = True Button2.Visible = TrueEnd If

Zum Beenden des Bildschirmschoners programmieren Sie die Schaltfläche Beenden mit dem Code Application.Exit(). Die Schaltfläche RSS-Feed belegen Sie erst mit einem Code, wenn Sie das RSS-Formular vollends gestaltet haben.