Fenetre aux contours personnalisables par simple sélection d'un masque bmp

Soyez le premier à donner votre avis sur cette source.

Vue 10 226 fois - Téléchargée 1 516 fois

Description

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

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
samedi 18 avril 2009
Statut
Membre
Dernière intervention
18 avril 2009

Bonjour ,
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 !
Messages postés
2167
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
1
ah ouais comme quoi il se sont vraiment embêtés les autres !

Merci pour l'astuce
Messages postés
54
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
14 juillet 2007

Arf désolé je viens de comprendre!
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
++
Messages postés
54
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
14 juillet 2007

Bonsoir,

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?
@+
Messages postés
5
Date d'inscription
mardi 8 février 2005
Statut
Membre
Dernière intervention
10 mars 2006

Bonsoir,

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.

@+
Afficher les 21 commentaires

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.