Frage

Ich möchte eine c # -Anwendung mit mehreren Fenstern erstellen, die alle transparent mit etwas Text sind.

Der schwierige Teil macht diese Formen auf dem Desktop sitzen, sondern unter den Desktop-Icons. Ist das möglich?

War es hilfreich?

Lösung

Nur macht das Fenster transparent ist sehr einfach:

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

Sie können etwas tun, um es Sie noch mit dem Desktop oder irgendetwas anderes unter Ihrem Fenster interagieren zu machen, so können:

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 );
    }
}

Andere Tipps

Danke für die Tipps Jeff. Es ist immer noch nicht ganz das, was ich bin nach. Ich würde effektiv wie das Fenster erscheinen, als ob es Teil des Desktops war so Symbole oben auf meiner Form sitzen können.

Vielleicht gibt es einen anderen Weg, es zu tun. Kann ich eigentlich Text und Grafiken direkt auf den Desktop ziehen?

Das Verfahren, das oben von Jeff Hillman beschrieben ist wirksam bei der Herstellung der Fenster transparent, die Ihnen die Möglichkeit geben sollte, es zu haben scheinen, als ob es Teil des Desktops ist (die Sie erwähnt ist Ihr Ziel.

Ein Problem, das Sie in ausführen können, den ich erst vor kurzem in so gut lief, wird mit irgendwelchen Anti-Aliasing-Flags gesetzt, um das Fenster zu ziehen. Insbesondere mit DrawText, einen beliebigen Text, der mit Anti-Aliasing-Flags gerendert ist gesetzt gemacht, als ob der Hintergrund nicht transparent waren. Das Endergebnis ist, dass Sie Text mit einem leichten schlüpfrig Rande um es zu bekommen. Ich bin sicher, dies würde für etwas anderes als auch wahr halten, obwohl ich noch nicht ausprobiert.

Gibt es irgendwelche Gedanken darüber, wie das lösen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top