[C#] Drawing on top of all applications

Marschal

Großer Enumerator
Hi Community.

Wie manche vllt schon bemerkt haben, bin ich dabei eine Art Whiteboard zu entwickeln.

Dieses soll auch gewisse Grundfunktionen implementieren. Eine interaktion mit dem Computer besteht bereits. Nun will ich auch zeichnen können, am besten "über" allem. Also man soll zum beispiel, wenn man sich derzeit auf dem Desktop befindet, nach anwählen des entsprechenden Tools, auf der Oberfläche zeichnen können. Jedoch, soll man aber auch, wenn man in Power Point einen Vortrag hält auch die Folien weiterhin weiterklicken können.

Ich hab mir Überlegt, ich nehme einfach eine Form im maximaler größe, mache diese Transparent, und lasse mit Hilfe der Klasse System.Drawing.Grafics meine Zeichnungen auf dem Bildschirm erscheinen. Das Problem ist, somit habe ich immer meine Form im Vordergrund und kann dan somit an die Application darunter (bsp Power Point) keine Events mehr schicken (zb MouseDown).

Alternativ habe ich mir überlegt, ich gestallt einfach eine kleine GUI, meine Toolbox zum Beispiel, die immer Im Vordergrund bleibt, damit man immer auf die Werkzeuge klicken kann, aber der Rest des Bildschirm nicht durch diese GUI ausgefüllt wird, doch so müsste ich doch irgendwie zugriff auf den Grafickontext der gesammten Darstellung erhalten um immer "über" alles zeichen zu können.

Liege ich in meinen Annahmen richtig? Falls hier jemand andere Ideen und Tipps zur Umsetzung hat, würd ich mir diese gerne anhören, bevor ich mich an die realisierung setze;)
 
Ok, ich denke ich werde es mit dem geräte device managen.

mit iterop aus der user32.dll die methoden GetDC(IntPtr hwnd) und ReleaseDC(IntPtr dc) holen. und dann in ein GDI+ Graphics object mithilfe von Graphics.FromHdc. umwandeln.

so kann ich dan bequem "überall" zeichnen.

Falls jemand ein aähnliches Problem hat, jetzt kann ich helfen;)
 
Zurück