Bon, alors je sais, je sais, y a déjà beaucoup de sources ici qui traitent de ce problème... Moi aussi j'ai passé du temps à chercher un code simple pour faire ça... mais il n'y a pas de source qui fait ce que je propose ici, c'est-à-dire définir les contours de la form simplement en donnant une image qui correspond à ce que vous voulez afficher, et une autre (le masque) qui sert à définir les zones qui seront apparentes et celle qui seront non-apparentes (c'est-à-dire des vides, des trous).
J'ai testé :
-
http://www.vbfrance.com/codes/FORME-IRREGULIERE-TOTORIAL_1218.aspx qui marche parfaitement, mais ne permet de faire que des rectangles ou ellipses...
-
http://www.vbfrance.com/codes/FORM-BORDS-IRREGULIERS-TRANSPARENCE-PARIR-IMAGE-PRATIQUE-POUR-SKINS_975.aspx, qui ressemble à ce que je veux faire mais il y a un petit problème dont je ne connais pas l'origine (des traits blancs horizontaux là où ça devrait être vide)
-
http://www.vbfrance.com/codes/TOUREIFFEL_1268.aspx qui correspond tout à fait à ce que je veux faire mais qui est difficilement évolutif : pour faire la même chose avec une autre image, il faut y passer du temps...
- bien d'autres...
Bon, là j'ai fait n'importequoi en mettant simplement une image, c'est totalement sans intéret mais cela sert simplement à démontrer ce qu'il est possible de faire... Le code est ultra simple comparé aux sources que je viens de citer, simple par sa longueur (création du masque de la form en 5 lignes) et par sa compréhension aisée.
Laissez aller votre imagination pour créer de vraies forms, contenant des controles et du code derrière, je pense qu'on peut faire des trucs bien farfelus avec ça...
NE METTEZ PAS VOTRE MASQUE EN JPG, car la transparence serait mal faite, vu que jpg modifie légèrement la couleur de certains pixels...
Source / Exemple :
'*****************************************************
' Ce petit dessin est de... nessie !!! ^^
' Visitez son site : http://www.monkeymadness.org
'*****************************************************
'****************************** MEGA IMPORTANT ***************************************
'***** Mettre la propriété Autoredraw de votre PictureBox "Mask" à True
'***** (si vous voulez tenter de reproduire ceci en partant d'un projet vide)
'***** PAS DE MASQUE EN JPG
ZIP ZIP ZIP
j'ai deja commence sur visual basic 2008 express certaines applications.
Cependant ces fichiers au format vpb sont ils compatibles pour ma version de logiciel? etant donne qua louverture il y a une erreur et que lorsque je sauvegarde mes projets ils sont au formats .vbproj
merci davance !
Merci pour l'astuce
dans
"SetLayeredWindowAttributes frmMain.hwnd, BackColor, 0, 1"
il me semble qu'il suffit de remplacer le 0 par une valeur comprise entre 0 et 255 (du transparent vers l'opaque) et de mettre 3 à la place de 1
++
Je voulais savoir si il était possible de gérer en même temps une transparence, plus ou moins importante, de la form, dans sa totalité ? Et donc de pouvoir "découper" les contours de la form et donner un aspect transparent à la form?
@+
Encore une solution SANS le PictureBox !
On peut encore simplifier le code et supprimer carrément le PictureBox Mask ainsi que la procédure CreateMask.
Il suffit de placer la propriété BackColor de la Form à la couleur que l'on veut transparente sur l'image (ici le vert).
Supprimer la déclaration GetPixel devenue inutile.
Dans Form_Load uniquement ceci :
Dim Attrib As Long
Attrib = GetWindowLong(frmMain.hwnd, -20)
SetWindowLong frmMain.hwnd, -20, Attrib Or &H80000
SetLayeredWindowAttributes frmMain.hwnd, BackColor, 0, 1
Et ça marche !!!
Encore merci pour ce code génial.
@+
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.