2009-12-12 2 views
1

J'essaye juste de créer un contrôle de forme en forme de winform en .net avec la forme faite sur commande de forme de ballon. Il y a besoin d'une info-bulle qui est transparente et je peux mettre des boutons sur l'info-bulle, mais l'info-bulle dans .net ne fournit pas la facalité que nous pouvons mettre les boutons sur le contrôle de l'info-bulle donc Je veux faire un contrôle de forme ressemble à un infobulle ballon et donc je peux mettre des boutons sur cette forme ressemblant à une info-bulle. Mais je ne peux pas montrer le contrôle de forme de fenêtre ressembler à une info-bulle ballon. Alors, que dois-je faire ?? J'ai essayé d'une manière que je crée une image dans le powerpoint de la forme de ballon et l'ai réglée comme image d'arrière-plan de la propriété de forme. Mais il n'y a aucune solution avec cela.La forme ressemble à un ballon

+0

Ce n'est pas une chose simple à faire dans Winforms - vous devez créer un contrôle/fenêtre personnalisé comme les autres réponses l'ont suggéré. OUI, cela impliquera du travail. –

+4

@Harikrishna - s'il vous plaît ne continuez pas à poser la même question. Si quelque chose n'est pas clair, éditez la question pour la clarifier. J'ai fusionné les doublons. –

Répondre

1

La classe de contrôle prend en charge un BackColor avec une alpha < 255, il est automatique. Il demande au Parent de se dessiner pour produire l'arrière-plan du contrôle, puis il se dessine au-dessus de cela. Cependant, vous aurez besoin d'une fenêtre de haut niveau pour un ballon. C'est un type de fenêtre qui peut chevaucher arbitrairement une autre fenêtre et n'est pas confiné par la zone cliente d'une fenêtre sous-jacente. Il n'a pas de parent. Une info-bulle est une telle fenêtre.

Le contrôle uniquement disponible dans Windows Forms qui peut être une fenêtre de niveau supérieur est un formulaire. Le problème est: le tour de transparence ne fonctionne plus. Comme une fenêtre de niveau supérieur n'a pas de parent, il n'y a pas de fenêtre évidente pour demander de dessiner l'arrière-plan. Il pourrait s'agir de nombreuses fenêtres appartenant à d'autres processus. Vous pouvez obtenir la transparence dans un formulaire avec sa propriété TransparencyKey. Mais c'est une transparence "dure", équivalente à un alpha de 0. Vous en voulez probablement une douce. Un autre problème désagréable est que le dessin de texte anti-aliasé (ClearType) ne fonctionne plus car il n'y a plus de couleur de pixel de fond fiable.

Longue histoire courte: vous ne pouvez pas bien ce travail à moins que vous bornez le ballon dans la zone client d'un formulaire. Un contrôle, pas un formulaire.

0

Vous pouvez essayer de brancher sur l'événement Paint du contrôle et d'en tirer le visuel du bouton là.

Questions connexes