2009-05-14 10 views
1

Ich hatte ein bisschen eine Suche herum, konnte aber nichts ähnliches finden, wonach ich suchte. Ich bin daran interessiert, unterschiedliche Inhalte auf sekundären/tertiären Monitoren oder Projektoren mit C# anzuzeigen. Was ich erreichen möchte, ist eine Art Presenter View (ein lap Powerpoint) auf einem bestimmten Bildschirm (der primäre Bildschirm) und die Ausgabe auf einem sekundären Bildschirm oder Projektor. Ich habe nie wirklich versucht, etwas mit mehreren Display-Ausgaben zu entwickeln, so dass jede Anleitung wahrscheinlich auf einem ziemlich offensichtlichen Niveau sein muss.Projektor Steuerung/Anzeige C#

Wenn mir jemand in die richtige Richtung zeigen könnte, wie man mit so etwas in C# umgeht, würde das sehr geschätzt!

Antwort

2

Mit der Eigenschaft System.Windows.Forms.Screen.AllScreens können Sie auf eine Liste aller Monitore zugreifen, die Windows kennt. Wenn Sie ein Display verwenden möchten, das nicht vom Benutzer konfiguriert wurde, wird es schwieriger - wahrscheinlich müssen Sie den Display-Adapter mithilfe von DirectX initialisieren und darauf zugreifen.

+0

Als eine verwandte Teilfrage: wie ist es dann am besten, eine Vollbildausgabe auf einem Display anzuzeigen und die Kontrolle in einem anderen Display zu behalten? Ich weiß, dass Sie von anderen Vollbild-Anwendungen auf einem Multi-Monitor-Setup, wenn Sie versuchen, auf eine andere Stelle klicken, am Ende mit der Vollbild-Anwendung verlieren Fokus verlieren und sich minimieren. Wie sollte ich daran arbeiten - oder ist das kein Problem in dem von Ihnen beschriebenen Ansatz? (Ich kann im Moment nicht testen.) –

+2

Der einfachste Ansatz wäre, ein Vollbildfenster zu erstellen und es auf TopMost zu setzen, wobei die Informationen aus der AllScreen-Sammlung verwendet werden, um es zu positionieren. Dann haben Sie nicht das Problem, das traditionell bei Vollbildanwendungen mit einem einzigen Bildschirm zu sehen ist (wo sie sich selbst bei Fokusverlust minimieren). –

+0

Vielen Dank, ich werde es versuchen :) –

1

Eine der wichtigsten Klassen, mit denen Sie interagieren müssen, ist Screen (dies ist im WinForms-Namespace). Im Allgemeinen werden alle Bildschirme als eine Reihe von Arbeitsbereichen behandelt, in denen Sie die Bildschirmklasse verwenden können, um Eigenschaften für jeden Bildschirm zu erhalten.

Sie können alle Bildschirme wie diese erhalten ...

Screen [] screens = Screen.AllScreens; 

Here ist ein kurzer Artikel über Multi-Monitor-Programmierung in C# zu tun.

3

Um nur die Antwort von Keven zu erweitern (I + 1), bietet das Screen.AllScreens-Array eine Reihe von Screen-Objekten. Das Screen-Objekt hat eine Eigenschaft namens IsPrimary, mit der Sie bestimmen können, welches der primäre Bildschirm ist und welches der sekundäre (duh) ist. Außerdem verfügt das Objekt über eine Eigenschaft namens WorkingArea, die Ihnen alle Koordinaten von der zweite Bildschirm. Das coole daran ist, dass der WorkingArea.X eine negative Zahl ist, selbst wenn der sekundäre Bildschirm auf der linken Seite der Primärseite konfiguriert ist. Sie können dort Formulare platzieren oder was auch immer.