2010-07-31 13 views
6

Possiamo dipingere immagini e disegnare testo ... fuori una forma .. voglio dire letteralmente fuori ...disegnare/dipingere forma al di fuori

So che la sua stupida domanda da fare, ma possiamo ...

+1

o senza una forma – Moon

risposta

10

È possibile "imbrogliare" creando un modulo e impostando la proprietà TransparentColor sul colore di sfondo, quindi disegnare su di esso. Tuttavia, questo ti impedisce di disegnare il colore trasparente perché non verrà visualizzato.

Oppure è possibile disegnare direttamente sul desktop.

[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

Il problema di disegno direttamente alla finestra del desktop è che non si attacchi. La prossima volta che verrà detto al desktop di ridipingere, il disegno scomparirà. Mentre è possibile agganciare il pump dei messaggi del desktop e ridisegnare ogni volta che viene ridisegnato, si tratta di un grave errore. Utilizzare una finestra trasparente a schermo intero che possiede la tua finestra principale è il modo più economico per arrivarci. – Tergiver

1

Non puoi disegnare su qualcosa che non esiste. L'area all'esterno di di un modulo, in base a tale definizione, non esiste nel contesto del modulo.

Concordo con Henk, però, si possibile pareggio sulle forme trasparenti.

Problemi correlati