Laden...

Screenshot wird nicht dargestellt

Letzter Beitrag vor 13 Jahren 3 Posts 1.437 Views
Screenshot wird nicht dargestellt

Hallo c#-community,

hab wieder mal ein kleines Problem. Ich möchte in meinem Programm ein verkleinertes Bild meines Bildschirms darstellen. Habe mir auch mehrere Quellen hier herausgesucht und folgende Methoden in meinem Programm erstellt:



private void ButtonScreenShot_Click(object sender, EventArgs e)
            {
                Bitmap test;
                test = GetBitmapOfPrimaryScreen();
                if (test != null) test = GetScaledBitmapOfPrimaryScreen(test, 400, true);
                PictureBoxScreenShot.Image = test;
                PictureBoxScreenShot.Invalidate();
            }

private Bitmap GetBitmapOfPrimaryScreen()
            {
                Bitmap bitmap;
                Rectangle ScreenRect = new Rectangle(0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
                bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
                Graphics g = Graphics.FromImage(bitmap);
                g.CopyFromScreen(new Point(0, 0), new Point(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height), ScreenRect.Size);
                g.Dispose();
                return bitmap;
            }

private Bitmap GetScaledBitmapOfPrimaryScreen(Bitmap BitmapOfPrimaryScreen, int SideLength, bool horizontalOrVertical)
            {
                int x = 0, y = 0, imgwidth = -1, imgheight = -1;

                if (BitmapOfPrimaryScreen == null)
                    return BitmapOfPrimaryScreen;

                if (BitmapOfPrimaryScreen.Width < 1 || BitmapOfPrimaryScreen.Height < 1)
                    return BitmapOfPrimaryScreen;

                imgwidth = BitmapOfPrimaryScreen.Width;
                imgheight = BitmapOfPrimaryScreen.Height;

                if (horizontalOrVertical == false)
                    if (imgheight == SideLength)
                        return BitmapOfPrimaryScreen;

                if (horizontalOrVertical == true)
                    if (imgwidth == SideLength)
                        return BitmapOfPrimaryScreen;

                float scaleFactor = ((float)SideLength / ((horizontalOrVertical) ? imgwidth : imgheight));
                x = (int)((float)imgwidth * scaleFactor);
                y = (int)((float)imgheight * scaleFactor);

                Bitmap ret = new Bitmap(x, y);
                Graphics g = Graphics.FromImage(ret);
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                g.DrawImage(BitmapOfPrimaryScreen, 0, 0, x, y);
                g.Dispose();
                return ret;


Das Programm compiliert und läuft ohne Probleme. Allerdings, wenn ich den Button drücke, welcher den Screenshot erstellen soll, passiert nichts. Der Quellcode wird auch ordnungsgemäß abgearbeitet und auch beim Debuggen finde ich keinen Fehler. Sieht vieleicht jemand wo der Fehler liegt, denke mal ist irgendein trivialer wieder mal, bei dem ich wieder den Wald vor lauter Bäumen nicht sehe.

Vielen Dank
mirrowwinger

Hallo mirrowwinger,

g.CopyFromScreen(new Point(0, 0), new Point(0, 0), ScreenRect.Size);

herbivore

Danke dir funktioniert jetzt alles. Habe ich die Funktion wohl vollkommen falsch verstanden. Dachte man muss da wieder ein Rechteck angeben, mit linker ober Ecke (1. Point) und rechter oberer Ecke.