2010-07-31 5 views
6

Können wir Bilder und zeichnen Text malen ... außerhalb einer Form .. ich meine buchstäblich außerhalb ...Zeichnen/Malen äußere Form

i seine dumme Frage wissen, zu fragen, aber können wir ...

+1

oder ohne Form – Moon

Antwort

10

Sie können "schummeln", indem Sie ein Formular erstellen und seine TransparentColor-Eigenschaft auf die Hintergrundfarbe festlegen und dann darauf zeichnen. Dies verbietet Ihnen jedoch, die transparente Farbe zu zeichnen, da sie nicht angezeigt wird.

Oder Sie könnten tatsächlich direkt auf den Desktop zeichnen.

[DllImport("User32.dll")] 
public static extern IntPtr GetDC(IntPtr hwnd); 
[DllImport("User32.dll")] 
public static extern void ReleaseDC(IntPtr dc); 

IntPtr desktopPtr = GetDC(IntPtr.Zero); 
Graphics g = Graphics.FromHdc(desktopPtr); 

// Do graphics manipulation here with "g" object 

// Very important - free desktop graphics. 
g.Dispose(); 
ReleaseDC(desktopPtr); 
+4

Das Problem mit direkt auf dem Desktop-Fenster zeichnen ist, dass es nicht haftet. Wenn der Desktop das nächste Mal neu gezeichnet wird, wird die Zeichnung nicht mehr angezeigt. Während Sie die Nachrichtenpumpe des Desktops anschließen und neu zeichnen können, wenn sie neu gezeichnet wird, ist dies ein ernsthafter Overkill. Die Verwendung eines transparenten Vollbildfensters, das Ihr Hauptfenster besitzt, ist der günstigste Weg dorthin. – Tergiver

1

Sie können nicht auf etwas zurückgreifen, das nicht existiert. Der Bereich außerhalb eines Formulars nach dieser Definition existiert nicht im Kontext des Formulars.

Ich stimme mit Henk, aber Sie können auf transparente Formen zeichnen.