FENETRE AUX CONTOURS PERSONNALISABLES PAR SIMPLE SÉLECTION D'UN MASQUE BMP
_120_
Messages postés15Date d'inscriptionsamedi 11 novembre 2000StatutMembreDernière intervention 3 mai 2007
-
7 mars 2006 à 22:34
kekkaishi
Messages postés1Date d'inscriptionsamedi 18 avril 2009StatutMembreDernière intervention18 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.
kekkaishi
Messages postés1Date d'inscriptionsamedi 18 avril 2009StatutMembreDernière intervention18 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és2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 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és54Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention14 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és54Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention14 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és5Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention10 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és5Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention10 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és7Date d'inscriptionsamedi 13 mars 2004StatutMembreDerniè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és15Date d'inscriptionsamedi 11 novembre 2000StatutMembreDerniè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és7Date d'inscriptionsamedi 13 mars 2004StatutMembreDerniè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és158Date d'inscriptionlundi 17 mai 2004StatutMembreDernière intervention16 juillet 2007 9 mars 2006 à 08:02
C'est fou! Où est passé le code |o|??
Encore bravo.
_120_
Messages postés15Date d'inscriptionsamedi 11 novembre 2000StatutMembreDerniè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és15Date d'inscriptionsamedi 11 novembre 2000StatutMembreDerniè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és158Date d'inscriptionlundi 17 mai 2004StatutMembreDernière intervention16 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és63Date d'inscriptionsamedi 11 octobre 2003StatutMembreDernière intervention30 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és5Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention10 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és6Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention12 octobre 2007 8 mars 2006 à 11:33
Salut,
Très bon code.
A+
f8bpz
Messages postés7Date d'inscriptionsamedi 13 mars 2004StatutMembreDerniè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és5Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention10 mars 2006 7 mars 2006 à 23:20
Bonsoir,
Pour la barre de tache, Oup's, j'ai pas été assez rapide !
@+
schtroumpft2301
Messages postés5Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention10 mars 2006 7 mars 2006 à 23:18
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és2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201822 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és15Date d'inscriptionsamedi 11 novembre 2000StatutMembreDerniè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.
18 avril 2009 à 11:06
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 !
2 oct. 2008 à 18:48
Merci pour l'astuce
3 juin 2007 à 02:17
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
++
3 juin 2007 à 00:51
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?
@+
10 mars 2006 à 22:16
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.
@+
9 mars 2006 à 14:53
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
@+
9 mars 2006 à 09:40
(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
9 mars 2006 à 09:33
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
9 mars 2006 à 08:31
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)
@+
9 mars 2006 à 08:02
Encore bravo.
9 mars 2006 à 00:43
J'espère que ça vous plaît maintenant !
8 mars 2006 à 23:42
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
8 mars 2006 à 20:38
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".
8 mars 2006 à 14:49
quelqu'un sait il le faire ?
8 mars 2006 à 13:23
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.
@+
8 mars 2006 à 11:33
Très bon code.
A+
8 mars 2006 à 08:32
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...
@+
7 mars 2006 à 23:20
Pour la barre de tache, Oup's, j'ai pas été assez rapide !
@+
7 mars 2006 à 23:18
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).
@+
7 mars 2006 à 22:47
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.
7 mars 2006 à 22:34
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 ?