Problème de transparence lors de la création d'une windows form non rectangulair

cs_huguette49 Messages postés 4 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 1 février 2007 - 31 janv. 2007 à 13:41
cs_huguette49 Messages postés 4 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 1 février 2007 - 1 févr. 2007 à 10:14
Bonjour,

j'ai longtemps cherché sur le net une solution à ce problème :

Je veux créer une fenêtre non rectangulaire en utilisant comme l'indique microsoft la propriété TransparencyKey. Seulement en 32 bits le fond de la form reste visible. Y-a t'il un moyen de contourner se problème car la solution de passer en 16 bits n'est pour moi pas une solution. En effet, la majorité des PC tournent avec une config en 32 bits par défaut...

Merci d'avance

6 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
31 janv. 2007 à 14:21
Salut, utilises la propriété Region de la forme pour en délimiter ses contours. Sinon pour TransprencyKey es tu sûr que ce n'est pas l'inverse, c-à-d la couleur de fond qui devient visible en 16 bits !?
0
cs_huguette49 Messages postés 4 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 1 février 2007
31 janv. 2007 à 14:55
Bonjour et merci d'avoir répondu,

non, la transparence n'est effective qu'en 16 bits.

Je place dans le constructeur de la form :

this

.TransparencyKey =
Color.Lime;

this.BackColor =
Color.Lime;

Le fond de la form est rendu transparent en 16 bits. En revanche, en 32 bits il ne l'est pas, mais apparaît avec la couleur de fond choisie.

Peux tu me donner plus de précision sur l'utilisation de la propriété Region.

Merci d'avance
0
cs_huguette49 Messages postés 4 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 1 février 2007
31 janv. 2007 à 16:16
Ok, je crois avoir trouvé une solution à mon problème sur ce lien :

http://weblogs.asp.net/cumpsd/articles/79878.aspx

En effet, il faut bien utiliser la propriété Region de la form. Ce lien explique comment découper la form en fonction de l'image qu'on veut envoyer au backgroundimage de celle ci.

Il faut simplement fixer une couleur sur le fond de l'image de fond qu'on veut rendre transparente, et une fonction permet de construire un objet Region en récupérant la position de tous les points situés à la limite entre la couleur spécifiée et l'image du background.

Merci encore Lutinor
0
cs_Bidou Messages postés 5486 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
31 janv. 2007 à 16:39
Salut,
Si jamais tu peux également jeter un coup d'oeil sur cette source

<hr />
-Blog-
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
1 févr. 2007 à 09:57
Huguette49, oui c'est une une méthode bien connue que j 'ai souvent donné..

http://www.csharpfr.com/infomsg_PROBLEME-CAPTURE-ECRAN-RICHTEXTBOX_706435.aspx

Il existe une autre méthode également :



http://www.bobpowell.net/region_from_bitmap.htm
0
cs_huguette49 Messages postés 4 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 1 février 2007
1 févr. 2007 à 10:14
Le problème qui apparaît est que si l'image à découper contient des niveaux de transparence, on risque d'avoir une image découpée grossièrement. Puisque la construction de l'objet Region se base sur une seule couleur. Il faut donc supprimer également l'effet de fondu sur l'objet à découper.
0
Rejoignez-nous