[gelöst] Screenshot mit Textergänzungen in Datei schreiben



  • Es soll für eine aktive Form ein Screenshot erstellt und mit Textergänzungen des Anwenders in eine Datei geschrieben werden. Der Screenshot und die Erstellung der Datei laufen, es fehlen noch die Textergänzungen.

    private void ScreenshotDatei()
            {
                string datei = "screen001.png";    // Dateiname
                string inhalt = "screenshot001";   // Textergänzung Bezeichnung
                string datum = "03.04.2013";       // Textergänzung Datum
    
             // Grösse der Bitmap für Ausgabe festlegen
                Bitmap bmp = new Bitmap(this.Width + 100, this.Height + 130);
             // Screenshot in die Bitmap einpassen mit Platz für die strings
                this.DrawToBitmap(bmp, Rectangle.FromLTRB(50,100, this.Width+100, this.Height+100));
    
             // hier fehlt die Einfügung der strings der Testergänzungen oberhalb des screenshots
             // ....
    
             // Datei speichern
                bmp.Save(datei, ImageFormat.Png);
    
                MessageBox.Show("ScreenshotDatei erstellt");
            }
    

    Ich möchte das direkt ohne Übertragung z.B. nach Word



  • Hol dir mittels

    var g = Graphics.FromImage(bitmap);
    

    eine Graphics-Referenz auf das Bitmap und schreib deine Ergänzungen dann mit DrawString da rein.



  • Gut, hatte ich inzwischen auch schon geschafft. Das gefragte Ziel ist erreicht. Nur leider erscheinen die Texteinfügungen fett = bold, egal FontStyle.Regular.

    // Graphics g = Graphics.FromImage(bmp);
       var g = Graphics.FromImage(bmp);
       g.DrawString(inhalt, new Font("Microsoft San Serif", 10, FontStyle.Regular), Brushes.Black, new Point(50, 25));
       g.DrawString(datum, new Font("Microsoft San Serif", 10, FontStyle.Regular), Brushes.Black, new Point(50, 45));
    


  • Das fehlt ein "s" im Fontnamen: "Microsoft Sans Serif" 😉
    Sonst wird halt ein Default-Font gewählt.

    Edit: Um nicht explizit einen Fontnamen zu wählen, der evtl. auf dem System nicht vorhanden ist, kann man auch einfach die FontFamily.GenericSansSerif-Eigenschaft benutzen. Für eine bestimmte Größe und/oder Style dann z.B.

    new Font(FontFamily.GenericSansSerif, 10);
    new Font(FontFamily.GenericSansSerif, 10, FontStyle.Italic);
    

    verwenden.
    Desweiteren gibt es noch FontFamily.GenericMonospace sowie FontFamily.GenericSerif...


Anmelden zum Antworten