Question

Je souhaite créer une application c # avec plusieurs fenêtres transparentes avec du texte.

La difficulté consiste à placer ces formulaires au-dessus du bureau, mais sous les icônes du bureau. Est-ce possible?

Était-ce utile?

La solution

Rendre la fenêtre transparente est très simple:

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

Vous pouvez faire quelque chose comme ceci pour que vous puissiez toujours interagir avec le bureau ou avec tout ce qui se trouve sous votre fenêtre:

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

Autres conseils

Merci pour les conseils Jeff. Ce n'est toujours pas ce que je recherche. J'aimerais effectivement que la fenêtre apparaisse comme si elle faisait partie du bureau pour que les icônes puissent s'afficher au-dessus de mon formulaire.

Peut-être y a-t-il une manière différente de le faire. Puis-je réellement dessiner du texte et des graphiques directement sur le bureau?

La méthode décrite ci-dessus par Jeff Hillman rend la fenêtre transparente, ce qui devrait vous permettre de l’afficher comme si elle faisait partie du bureau (ce que vous avez mentionné est votre objectif.

Un problème que vous pouvez rencontrer, et que je viens de connaître également, est de dessiner vers la fenêtre avec un ensemble d’indicateurs d’anti-aliasing. En particulier, avec DrawText, tout texte rendu avec des indicateurs d'anti-aliasing est rendu comme si l'arrière-plan n'était PAS transparent. Le résultat final est que vous obtenez du texte entouré d'une légère bordure décolorée. Je suis sûr que cela serait vrai pour tout le reste, même si je n'ai pas essayé.

Y a-t-il des idées sur la façon de résoudre ce problème?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top