Feedback

C# - Klasse zum Erstellen von Screenshots

Veröffentlicht von am 20.01.2007
(2 Bewertungen)
Mit Hilfe dieser Klasse können Screenshots erstellt werden.

folgende Möglichkeiten bestehen:
- vollständiger Desktop
- aktives Fenster
- benutzerdefinierter Bereich
- anhand des Handels des Fensters

benötigte Namespaces:
System
System.Runtime.InteropServices
System.Drawing
System.Windows.Forms
GFU-Schulungen  [Anzeige]

Visual Studio Team Foundation Server 2017/2015 (TFS) für Administratoren - Kompakt

Nach dieser Schulung beherrschen Sie die Grundlagen des TFS. Sie erledigen administrative Aufgaben schnell und sicher.

ASP.NET 2.0 und 3.5

Dieser Kurs vermittelt Ihnen alle Erweiterungen von Microsoft ASP.NET 2.0. Zu diesen zählen u. a. Data Bindung, Master Pages, und Security.

/// <summary>
/// Klasse zum erzeugen beliebiger Screenshots
/// </summary>
public class Screenshot
{
    public Screenshot()
    {
    }
   
    private struct RECT
    {
        public int Left;
        public int Top;
        public int Right;
        public int Bottom;
    }

    [DllImport("user32.dll")]
    private static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);

    [DllImport("user32.dll")]
    private static extern int GetForegroundWindow();

    /// <summary>
    /// Erzeugt ein Screenshot vom gesamten Desktop.
    /// </summary>
    /// <returns>Bitmap</returns>
    public Bitmap WholeDesktop()
    {
        return CreateScreenshot(0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
    }
    
    /// <summary>
    /// Erzeugt ein Screenshot vom übergebenen Bereich.
    /// </summary>
    /// <param name="topleft">Punkt des Bereich oben - links</param>
    /// <param name="bottomRight">Punkt des Bereich unten - rechts</param>
    /// <returns>Bitmap</returns>
    public Bitmap UserDefined(Point topleft, Point bottomRight)
    {
        return CreateScreenshot(topleft.X, topleft.Y, bottomRight.X, bottomRight.Y);
    }

    /// <summary>
    /// Erzeugt ein Screenshot vom Fenster des übergebenen Handels
    /// </summary>
    /// <param name="windowhandle"></param>
    /// <returns>Bitmap</returns>
    public Bitmap UserDefinedWindowHandle(IntPtr windowhandle)
    {
        return CreateScreenshot(windowhandle);
    }

    /// <summary>
    /// Erzeugt ein Screenshot vom aktiven Fenster.
    /// </summary>
    /// <returns>Bitmap</returns>
    public Bitmap ActiveWindow()
    {
        return CreateScreenshot((System.IntPtr)GetForegroundWindow());
    }

    private Bitmap CreateScreenshot(int left, int top, int width, int height)
    {
        Bitmap bmp = new Bitmap(width, height);
        Graphics g = Graphics.FromImage(bmp);
        g.CopyFromScreen(left, top, 0, 0, new Size(width, height));
        g.Dispose();
        return bmp;
    }

    private Bitmap CreateScreenshot(IntPtr windowhandle)
    {
        RECT windowRectangle;
        GetWindowRect(windowhandle, out windowRectangle);
        return CreateScreenshot(windowRectangle.Left, windowRectangle.Top, windowRectangle.Right - windowRectangle.Left, windowRectangle.Bottom - windowRectangle.Top);
    }
Abgelegt unter Screenshot.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!