Domanda

Voglio creare un'applicazione c # con più finestre tutte trasparenti con del testo su.

La parte difficile è far sedere questi moduli sopra il desktop ma sotto le icone del desktop. È possibile?

È stato utile?

Soluzione

Rendere trasparente la finestra è molto semplice:

this.BackColor = Color.Fuchsia;
this.TransparencyKey = Color.Fuchsia;

Puoi fare qualcosa del genere per farlo in modo da poter ancora interagire con il desktop o qualsiasi altra cosa sotto la tua finestra:

public const int WM_NCHITTEST = 0x84;
public const int HTTRANSPARENT = -1;

protected override void WndProc(ref Message message)
{
    if ( message.Msg == (int)WM_NCHITTEST )
    {
        message.Result = (IntPtr)HTTRANSPARENT;
    }
    else
    {
        base.WndProc( ref message );
    }
}

Altri suggerimenti

Grazie per i suggerimenti Jeff. Non è ancora quello che sto cercando. Vorrei davvero che la finestra apparisse come se fosse parte del desktop in modo che le icone potessero stare in cima al mio modulo.

Forse c'è un modo diverso di farlo. Posso effettivamente disegnare testo e grafica direttamente sul desktop?

Il metodo sopra descritto da Jeff Hillman è efficace nel rendere trasparente la finestra, il che dovrebbe darti la possibilità di farla apparire come se fosse parte del desktop (che hai menzionato è il tuo obiettivo.

Un problema che potresti riscontrare, che ho riscontrato anche di recente, è quello di disegnare sulla finestra con tutti i flag anti-alias impostati. In particolare, usando DrawText, qualsiasi testo reso con il set di flag anti-aliasing viene reso come se lo sfondo NON fosse trasparente. Il risultato finale è che ottieni del testo con un leggero bordo sfocato attorno ad esso. Sono sicuro che questo sarebbe vero anche per qualsiasi altra cosa, anche se non ci ho provato.

Ci sono pensieri su come risolverlo?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top