FENETRE AUX CONTOURS PERSONNALISABLES PAR SIMPLE SÉLECTION D'UN MASQUE BMP

_120_ Messages postés 15 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 3 mai 2007 - 7 mars 2006 à 22:34
kekkaishi Messages postés 1 Date d'inscription samedi 18 avril 2009 Statut Membre Dernière intervention 18 avril 2009 - 18 avril 2009 à 11:06
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36433-fenetre-aux-contours-personnalisables-par-simple-selection-d-un-masque-bmp

kekkaishi Messages postés 1 Date d'inscription samedi 18 avril 2009 Statut Membre Dernière intervention 18 avril 2009
18 avril 2009 à 11:06
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 !
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
2 oct. 2008 à 18:48
ah ouais comme quoi il se sont vraiment embêtés les autres !

Merci pour l'astuce
stuntman_91 Messages postés 54 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 14 juillet 2007
3 juin 2007 à 02:17
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
++
stuntman_91 Messages postés 54 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 14 juillet 2007
3 juin 2007 à 00:51
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?
@+
schtroumpft2301 Messages postés 5 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 10 mars 2006
10 mars 2006 à 22:16
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.

@+
schtroumpft2301 Messages postés 5 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 10 mars 2006
9 mars 2006 à 14:53
Bonjour,

Superbe !
Ca c'est du léger.
Afin éviter le souci que nous explique F8BPZ donc de voir tous les contrôles à la création, on peut placer l'image du masque sur la Form et ne rien mettre dans le PictureBox (Mask) puis le positionner aux coordonnées 0 ,0 de la Form avec pour dimensions 120 x 120 twips donc tout petit.
On peut également mettre la Form juste aux dimensions de l'image.
Ensuite dans Form_Load on met uniquement ce code :
Mask.Picture = Me.Picture
CreateMask

@+
f8bpz Messages postés 7 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 9 mars 2006
9 mars 2006 à 09:40
En effet _120_, je n'y avait même pas pensé, comme quoi j'ai bien fait de poster mon commentaire !
(ce n'est pas parcequ'on charge une source qu'on ne doit plus réfléchir, hihi).
Je vais donc appliquer cette méthode.
Merci encore
_120_ Messages postés 15 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 3 mai 2007
9 mars 2006 à 09:33
F8BPZ, met la picturebox de coté, met l'image de ton masque dans form.picture (comme dans l'ancienne version), puis place tes controles, et enfin enlève l'image de form.picture au moment de compiler l'exécutable !

La nouvelle source est nettement plus avantageuse quand meme : as tu essayé de charger un wallpaper comme image avec l'ancienne source ? Moi ça a mi 30sec avant de créer le masque et quand j'ai voulu déplacer la fanêtre, j'ai du reboot mon pc :S ... alors qu'avec celle-ci, meme avec un wallpaper la masque se crée en un claquement de doigt et pour déplaceer la fenetre c'est parfaitement fluide
f8bpz Messages postés 7 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 9 mars 2006
9 mars 2006 à 08:31
Salut,
Beaucoup plus simple en effet mais moins pratique je trouve...
En effet, si on se sert de cette méthode pour faire une zone de travail aux formes agréables, il faudra placer des boutons, des labels, .....
Dans l'ancienne source c'était facile pour placer tout ces éléments car le mask était représenté sur la forme. Tandis que maintenant on doit le faire un peu au pif. Car si on place tout ces objets sur le masque, ils se retrouvent dans la picture box et n'apparaissent pas à l'éxécution.
Donc pour ma part je continue d'utiliser l'ancienne source qui est excellente.
(ou alors il y a une autre possibilité, je suis à l'écoute)

@+
Egyde Messages postés 158 Date d'inscription lundi 17 mai 2004 Statut Membre Dernière intervention 16 juillet 2007
9 mars 2006 à 08:02
C'est fou! Où est passé le code |o|??
Encore bravo.
_120_ Messages postés 15 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 3 mai 2007
9 mars 2006 à 00:43
Voila, je viens de poster mon nouveau code, qui est d'une simplicité encore plus enfantine et qui présente aussi l'avantage de faire beaucoup moins galérer le pc lors d'un déplacement de la fenêtre et la traînée moche lors d'un déplacement est beaucoup plus faible !

J'espère que ça vous plaît maintenant !
_120_ Messages postés 15 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 3 mai 2007
8 mars 2006 à 23:42
Ok pour le label moveform, c'est vrai qu'il est inutile.

Ok aussi pour le fait de n'avoir qu'une seule image, c'est tout con pourtant... pourquoi j'y ai pas pensé ??!! ;)

Thx pour vos commentaires
Egyde Messages postés 158 Date d'inscription lundi 17 mai 2004 Statut Membre Dernière intervention 16 juillet 2007
8 mars 2006 à 20:38
Effectivement très bon code. 9/10

Je confirme l'inutilité du label MoveForm. D'autre part, il est également possible de n'avoir qu'une seule image (ie picturebox vide donc programme plus léger après compil.).
Grossièrement, ça donnerait
...
Mask.Picture = Form1.Picture
lngTransColor& = GetPixel(Mask.hDC, 0, 0)
...
avec dans Form1.Picture l'image "masquée".
cs_wholehog2 Messages postés 63 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 30 janvier 2012
8 mars 2006 à 14:49
c'est génial est simple, maisn je cherche à convertir ton code en visual basic.net mais je n'y arrive pas.

quelqu'un sait il le faire ?
schtroumpft2301 Messages postés 5 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 10 mars 2006
8 mars 2006 à 13:23
Bonjour,

Après quelques petits essais, je puis suggérer ceci :

Le Label MoveForm n'est pas vraiment nécessaire, il suffit de placer le même code dans l'évenement Form_MouseDown pour obtenir le même résultat, alors qu'avec le Label on ne peut plus avoir accès aux évenements souris sur la fenêtre.

Ceci dit, celà n'enlève rien à la qualité de ce programme qui rest exellent.

@+
cs_zerozen Messages postés 6 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 12 octobre 2007
8 mars 2006 à 11:33
Salut,
Très bon code.
A+
f8bpz Messages postés 7 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 9 mars 2006
8 mars 2006 à 08:32
Salut,
Vraiment excellent, je suis ravi, c'est exactement ce que je cherchais. Jusqu'alors je n'avais réussi qu'à faire des formes simples (carrés,triangles,ellipses) mais maintenant je n'ai plus de limites. Un grand merci donc...

@+
schtroumpft2301 Messages postés 5 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 10 mars 2006
7 mars 2006 à 23:20
Bonsoir,

Pour la barre de tache, Oup's, j'ai pas été assez rapide !

@+
schtroumpft2301 Messages postés 5 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 10 mars 2006
7 mars 2006 à 23:18
Bonjour,

Pas mal du tout, j'avais fait un truc pour obtenir un résultat similaire il y a quelques temps (http://www.vbfrance.com/codes/CREER-REGIONS-COMPLEXES-POUR-FEUILLE_35461.aspx), mais j'avoue que ton idée est plus rapide à mettre en oeuvre que la mienne.

Pour que ton prog soit visible dans la barre des tâches après avoir mis BorderStyle à 0, il faut que tu place ensuite la propriété ShowInTaskbar à True. Le fait de mettre BorderStyle à 0 la place automatiquement sur False, à toi donc de modifier ensuite cette valeur (même chose pour les boutons d'agrandissement ou de réduction lorsque tu place BorderStyle à 1 (FixedSingle).

@+
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
7 mars 2006 à 22:47
Bonsoir,
Barre de tâches -> Propriété ShowInTaskBar de ta form à True !
Je vais aller jeter un petit coup d'oeil à ta source maintenant...

Bonne continuation.
_120_ Messages postés 15 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 3 mai 2007
7 mars 2006 à 22:34
Je me suis aperçu qu'il manque quelque chose à ce programme mais je ne sais pas comment faire :

Comment faire pour qu'il apparaisse dans la barre des tâches ??? Parce que le fait de mettre BorderStyle à 0, ça engendre qu'il n'apparaît pas dans la barre des tâches.

Comment faire ?
Rejoignez-nous