none
Screenshot auf auf mehrere Monitore RRS feed

  • Allgemeine Diskussion

  • Hallo,

    ich habe ein Screenshot tool wir das Snnippingtool erstellt.
    Jetzt habe ich nur Probleme beim erstellen eines Screenshot von einem Bereich auf mehreren Monitoren.

    public static Image Cap()
            {
                int w = 0, h = 0;
                Screen[] scs = Screen.AllScreens;
                foreach (Screen s in scs)
                {
                    w += s.Bounds.Width;
                    if (h < s.Bounds.Height) { h = s.Bounds.Height; }
                }
                using (Bitmap bmp = new Bitmap(w, h, System.Drawing.Imaging.PixelFormat.Format32bppPArgb))
                {
                    using (Graphics gr = Graphics.FromImage(bmp))
                    { gr.CopyFromScreen(SystemInformation.VirtualScreen.X, SystemInformation.VirtualScreen.Y, 0, 0, SystemInformation.VirtualScreen.Size, CopyPixelOperation.SourceCopy); }
                        
                    using (var snipper = new MestesEYES(bmp))
                    {
                        snipper.Size = SystemInformation.VirtualScreen.Size;
                        snipper.StartPosition = FormStartPosition.Manual;
                        snipper.Location = new Point(SystemInformation.VirtualScreen.X, SystemInformation.VirtualScreen.Y);
                        if (snipper.ShowDialog() == DialogResult.OK)
                        {
                            return snipper.Image;
                        }
                    }
                    return null;
                }
            }


    Ih bekomme den kopierten Desktop leider nur ein monitor zu gesicht obwohl die größe und die Position angegeben wird.
    Das komische überhaupt, mit

    snipper.Size = SystemInformation.VirtualScreen.Size;

    wird der kopierter Desktop auf PrimaryScreen angezeigt wenn die größe nicht expliziet angegeben wird dann wird es auf dem SecondaryScreen angezeigt.
    Wie bekomme den kopierten Desktop auf beiden Monitoren so das der User auf beiden Monitoren einen Bereich markieren kann.
    Wäre sehr dankbar dafür und wünsche noch einen schönen Tag noch.

    Lg
    String.Rise

    • Typ geändert Ciprian Bogdan Dienstag, 25. März 2014 21:07 keine Rückmeldung
    Mittwoch, 28. August 2013 08:57

Alle Antworten

  • Hi String.Rise.

    Vielleicht hilft dir dies weiter:

    http://entwickler-forum.de/archive/index.php/t-48631.html


    LG, Dennis.

    EDI Consultant/Developer

    Ich nutze meistens VB6 und VS2005 bis VS2012

    Bitte die Antworten sowie weitere hilfreiche Beiträge von Mitgliedern markieren. Vielen Dank.

    Mittwoch, 28. August 2013 09:18
  • Hallo Dennis,

    danke für die Antwort.
    Leider tritt mit der Variante auch das gleiche Phänomen auf.
    Ich sehe den kopierten Desktop (obwohl es die Breite von beiden Monitoren und Höhe vom höchsten Monitor hat) nur auf einen Monitor.
    Wie kann das sein wenn man ein WinForm definiert mit einer fixen postion und größe und dieser nicht über den Monitor hinausgeht.

    Lg
    Mittwoch, 28. August 2013 10:23
  • Hallo,
    ich habe deinen Code mal getestet und soweit ich sehe macht er das, was er soll. Ich habe 2 24" Monitore neben einander. Ich habe deinen Code mehrfach getestet. Einmal links Monitor 1 und rechts Monitor 2, dann habe ich beide vertauscht und dann habe ich nochmal beide Monitore Diagonal zueinander ausgerichtet. Immer kam das richtige Bild heraus.
    (Zum ändern über die Systemsteuerung: Systemsteuerung\Darstellung und Anpassung\Anzeige\Bildschirmauflösung)

    Ich bekam immer ein Bild der Größe 3840 mal 1080 zurück. Wo die Bildschirme diagonal zu einander standen, war die eine Seite schwarz (Bildschirm war unterhalb von diesem Bereich).

    Kannst du also vielleicht mal Screenshots hochladen, bei denen wir das Fehlverhalten sehen und am besten ein Vergleichsbild, wie du es haben möchtest?


    <Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Mittwoch, 28. August 2013 13:12
    Moderator
  • Hallo Koopakiller,

    dasnke für deine Antwort.
    Das Bild bei mir hat ebnfalls die Breite von beiden Monis und die Höhe vom höchsten.
    Beim kleineren wirds unten Schwarz angezeigt.
    Jedoch da wo man eine Maske auf den ausgegrauten Hintergrund zieht, wird bei mir nur auf einem Monitor angezeigt. Beim anderen Monitor passiert nichts wenn ich versuch eine Maske zu erstellen. Besser gesagt das zweite oder das erste jenach wie mans nimmt, wird nicht vom dem Bild
    using (Bitmap bmp = new Bitmap(w, h, System.Drawing.Imaging.PixelFormat.Format32bppPArgb))
    nicht überdeckt.
    Ich hoffe das ich das Problem besser schildern konnte. Danke trotzdem für deine Versuchen und wünsche euch noch einen schönen Tag noch.

    Lg
    String.Rise


    • Bearbeitet String.Rise Freitag, 30. August 2013 09:11
    Freitag, 30. August 2013 09:11
  • *****************************************************************************************************

    Dieser Thread wurde mangels weiterer Beteiligung ohne bestätigte Lösung abgeschlossen.

    Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.

    *****************************************************************************************************


    Ciprian Bogdan, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-PrinzipEntwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.





    Dienstag, 25. März 2014 21:06