Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

FRAME GRAPHIQUE A GRADIENTS DE COULEURS AVEC ICONE (+ EVENTS MOUSE, SUBCLASSING...)


Information sur la source

Catégorie :Control Classé sous : frame, gradient, controle, icone, style Niveau : Initié Date de création : 05/05/2007 Date de mise à jour : 11/05/2007 19:56:21 Vu / téléchargé: 4 274 / 1 157

Note :
8 / 10 - par 2 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (29)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Bon, voilà une frame graphique.
Voilà ses principales caractéristiques :
-Picture
-Gradients de couleurs
-Evenements molette, clicks...
-...


PROPRIETES
-BackColor1 (couleur 1 du gradient de couleur du fond de controle)
-BackColor2
-BackGradient (type de gradient du fond de controle)
-BackStyle (transparence ou pas)
-BreakCorner (true pour faire un arrondi des angles)
-Caption
-Font
-ForeColor
-ShowBackGround (affiche ou pas la zone de fond de controle)
-ShowTitle (affiche ou pas la zone de titre)
-TextPosition (left, right, center)
-TitleColor1 (couleur 1 du gradient de la zone de titre)
-TitleColor2
-TitleGradient (type de gradient)
-TitleHeight (taille de la barre de titre)
-Enabled
-DisplayColor (couleur de la bordure)
-ShowBorder (afficher ou pas la bordure)
-GrayPictureWhenDisabled (grise ou pas l'icone quand Enabled=false)
-PictureOffsetX (décalage en X de l'icone)
-PictureOffsetY
-DisplayPicture (affiche ou non la picture)
-PictureAligment (alignement de la picture)
-BorderWidth (largeur de la bordure)
-RoundAngle (valeur de l'angle des coins ==> plus la valeur est grande, plus le bord est arrondi)
-Picture (défini l'image)


EVENTS
-KeyPress
-KeyDown
-KeyUp
-MouseMove
-MouseDown
-MouseWheel
-MouseUp
-MouseDblClick
-MouseHover
-MouseLeave


Voir le screenshot pour quelques différentes possibilités !
 

Conclusion

Plus de bub avec les gradients ! (merci Moustachu)
Merci à Renfield pour son aide, et merci à Gobillot pour le snippet qui grise les images.

Un bug connu : la barre de titre du Frame dépasse des angles quand BackStyle=Transparent...


@+ (notez et commentez svp ^^)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

06 mai 2007 00:37:41 :
Ne jamais nommer une constante 'Right'...
08 mai 2007 18:00:03 :
Ajout des arrondis
08 mai 2007 18:07:14 :
Ajout de la possibilité de désactiver les arrondis
08 mai 2007 18:08:04 :
Updated description
11 mai 2007 19:56:21 :
Corrigé le bug qui empechait de mettre le gradient dans un des deux sens, utilisation des APIs citées par Renfield et Moustachu, bords arrondis réglables, optimisations diverses, ajout de la gestion d'une icone, ajout de nombreuses propriétés

Commentaires et avis

signaler à un administrateur
Commentaire de violent_ken le 05/05/2007 23:39:35

Note : surement possible de faire plus optimisé avec des APIs pour le traçage de gradient, mais j'ai voulu faire un code simple et commenté.

@+ et oubliez pas de noter et commenter ^^

signaler à un administrateur
Commentaire de Exploreur le 06/05/2007 00:40:47

Salut Violent_Ken,

Allez, moi j'adopte dessuite...Par contre pour les commentaires techniques...euh...comment dire...ce n'est pas moi qui pourra en dire...lol

A+
Exploreur

signaler à un administrateur
Commentaire de violent_ken le 06/05/2007 00:42:43

Content que ma source te plaise ;)

@+

signaler à un administrateur
Commentaire de jolicoeur79 le 06/05/2007 01:28:45

bon travail

signaler à un administrateur
Commentaire de lard le 07/05/2007 12:48:46

Excellent !!!

A plus...

LARD

signaler à un administrateur
Commentaire de violent_ken le 07/05/2007 21:08:12

Merci ;)
@+

signaler à un administrateur
Commentaire de Exploreur le 07/05/2007 21:17:35

Salut Violent_Ken,

Finalement juste un petit truc à dire niveau graphique....Cela cool avec les coins arrondis.

A+
Exploreur

signaler à un administrateur
Commentaire de violent_ken le 07/05/2007 21:26:47

En effet, mais çà demande pas mal de modifications à apporter...

Je vais voir si c'est possible de faire un truc comme çà :
http://www.enregistrersous.com/images/32394159920070507212634.jpg
tout en restant simple (c'est aussi le but de la source) ^^

@+ et merci pour le conseil

signaler à un administrateur
Commentaire de violent_ken le 07/05/2007 21:31:23

Après réflexion çà devrait être jouable ;)

@+

signaler à un administrateur
Commentaire de Exploreur le 07/05/2007 21:40:01

Salut Violent_Ken,

Ah..oui...Cela serai bien ça...

A+
Exploreur

signaler à un administrateur
Commentaire de violent_ken le 08/05/2007 18:08:38

Voilà, j'ai trouvé 30 minutes pour la MAJ...;)
Il y a désormais une gestion des arrondis, avec une property qui permet de (dés)activer les arrondis.



Je me suis pas cassé la tête à changer la forme du UserControl, je me suis contenté de dessiner des points dans les coins de la même couleur que le MaskColor... (méthode de Renfield).

Ne doit pas y avoir de conflit avec les gradients (faudrait pas que le MaskColor apparaisse dans un gradient !) après quelques tests.

@+

signaler à un administrateur
Commentaire de Exploreur le 08/05/2007 22:19:15

Salut Violent_Ken,

J'admire ta rapidité de réponse...

A+
Exploreur

signaler à un administrateur
Commentaire de violent_ken le 08/05/2007 22:33:58

Salut,
disons que çà a été plutôt rapide puisque c'était pas très difficile... mais j'ai d'autres source à mettre à jour en ce moment (ocx traduction par exemple) qui trainent un peu ! ;)


@+

signaler à un administrateur
Commentaire de Exploreur le 08/05/2007 22:36:26

Salut Violent_Ken,

Comme on dit : Chaque chose en son temps...

A+
Exploreur

signaler à un administrateur
Commentaire de violent_ken le 08/05/2007 22:41:50

Ehé, tout à fait ;)
@+

signaler à un administrateur
Commentaire de Renfield le 09/05/2007 08:45:24 administrateur CS

pour l'arrondis, dans un controle (pour le boulot) j'ai deja fait via APIs :

CreateRoundRectRgn
puis
SetWnidowRgn
et pour dessiner la bordure : FrameRgn

signaler à un administrateur
Commentaire de moustachu le 09/05/2007 09:13:58

Bonjour,

Renfield a dégainé plus vite que moi ^^.

Donc, pour les région, c'est fait. Pour le dégradé tu peux :
- Utiliser la classe de gestion d'image de Darksidious
- Faire une petite bidouille du genre :
        If CLng(RGB(LeftColor.R, LeftColor.G, LeftColor.B)) < CLng(RGB(RightColor.R, RightColor.G, RightColor.B)) Then
            lsigne = 1
        Else
            lsigne = -1
        End If

et ensuite :

            .ForeColor = RGB(LeftColor.R + lsigne * x * rAverageColorPerSizeUnit, LeftColor.G + lsigne * x * _
                gAverageColorPerSizeUnit, LeftColor.B + lsigne * x * bAverageColorPerSizeUnit)

Ca passe à peu près.

++
Moustachu

signaler à un administrateur
Commentaire de moustachu le 09/05/2007 11:08:43

Re-bonjour,

N'oublie pas (comme moi dans beaucoup de sources) le OleTranslateColor pour pouvoir utiliser les couleurs système.

++
Moustachu

signaler à un administrateur
Commentaire de violent_ken le 09/05/2007 19:06:53

Renfield ==> Merci pour les renseignements, je note ^^ Parce qu'à vrai dire je connais (très) peu les fonctions de la dll gdi32... donc c'est le bienvenu !


Moustachu ==> alors pour la classe de DarkSidious, je préfère ne pas l'utiliser (j'essaie de prendre le moins possible de code déjà fait et le refaire moi même, dans la mesure du possible).
Sinon pour la "bidouille", en effet, çà doit passer ^^ J'avais tenté un truc dans le genre déjà (d'ailleurs y doit rester deu fonctions GetMaxRGB et GetMinRGB ou un truc comme çà, c'était pour çà^^)
Et pour OleTranslateColor, effectivement je conaissais, je testerais pour voir si çà gagne du temps réellement.

Merci pour les commentaires, @+ (je ferais probablement une MAJ quand j'aurais du temps)

signaler à un administrateur
Commentaire de Renfield le 10/05/2007 07:05:52 administrateur CS

c'est pas une question de gagner du temps, le OleTranslateRGB...

c'est, comme l'indique moustachu, pour pouvoir utiliser les couleurs système... (&h80xxxxxx )

ca permet de passer d'un vbButtonFace à la valeur RGB

signaler à un administrateur
Commentaire de violent_ken le 10/05/2007 13:13:56

Ok, merci Renfield pour la précision.

J'avais lu http://www.vbfrance.com/codes/RGB-MEILLEUR-TECHNIQUE-VB_40020.aspx un peu vite alors...

@+

signaler à un administrateur
Commentaire de violent_ken le 10/05/2007 19:15:50

Bon, j'ai compris à quoi servait OleTranslateColor, je l'ai inclus dans le Usercontrol ;) Moi qui croyais que çà servait à convertir de Long à RGB...

Je vais essayer les APIs de Renfield, puis je rajouterais une option Picture (pour afficher une image 16x16) et j'étofferais les events.

Donc une MAJ dans quelques temps.
@+

signaler à un administrateur
Commentaire de Renfield le 10/05/2007 19:45:30 administrateur CS

L'avantage de passer par les Apis que je t'ai indiqué, c'est que le rayon (Roundness) peut etre un des propriétés de ton controle.

deja testé dans un de mes controles, faits pour le boulot, ca rend vraiment pas mal.

je suis a ta disposition, si tu as besoin d'une maquette, conseil...

signaler à un administrateur
Commentaire de violent_ken le 10/05/2007 19:48:30

Tout à fait, je suis en plein tests de l'API, c'est vraiment pratique ! J'ai encore un peu de mal avec le passage des 6 coordonnées, mais çà marche déjà plutôt bien ^^

Merci encore pour tes précieux conseils.
@+

signaler à un administrateur
Commentaire de moustachu le 11/05/2007 09:06:26

Oui, les API sont nos amies ! Il faut apprendre à les connaître ^^

signaler à un administrateur
Commentaire de violent_ken le 11/05/2007 19:59:22

Salut, grosse MAJ :

-correction du bug précédent (merci Moustachu)
-ajout d'APIs pour les contours (merci Renfield)
-ajout de nombreuses propriétés
-ajout de la gestion d'une icone (qui se grise quand enabled=false)
-optimisations diverses
-ajout OleTranslateRGB
-bordure avec angle et épaisser réglable
-...

@+

signaler à un administrateur
Commentaire de Renfield le 12/05/2007 12:21:03 administrateur CS

"Icone deplacée"... le texte est sous l'icone :/
"transparence avec bordure" le coin haut gauche apparait...

avec CombineRgn, tu pourrais arrondir que les coins qui t'arrangent, ca rend pas mal...

ton controle ressemble fort désormais a celui que j'avais fait au boulot ^^
ca rend vraiment pas mal, tu t'en sort bien

signaler à un administrateur
Commentaire de violent_ken le 12/05/2007 13:27:18

""Icone deplacée"... le texte est sous l'icone" ==> Oui c'est vrai, mais de toutes façons il ne faut utiliser les properties d'offset (X et Y) de l'icone que pour déplacer l'icone de quelques pixels (pas comme dans l'exemple, mais par exemple pour recentrer quand on a un énorme arrondi)

""transparence avec bordure" le coin haut gauche apparait." ==> En effet, c'est un (le) bug connu, je suis pas arrivé à le résoudre... je comprend pas trop pourquoi le coin est affiché puisque la zone ne le prend pas en compre (avec SetWnidowRgn)    -__-

"avec CombineRgn, tu pourrais arrondir que les coins qui t'arrangent, ca rend pas mal..." ==> Bonne idée, je vais travailler du côté de cette API

Merci pour le commentaire ;)
@+

signaler à un administrateur
Commentaire de violent_ken le 17/05/2007 17:22:04

Hop, je poste toute ma série de contrôles stylés XP :
http://www.vbfrance.com/code.aspx?ID=42726

@+

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Passer un controle en argument !! [ par pimousse75 ] Bonjour,je voudrais creer une fonction qui met en enable=false tous les controles d'une frameComment appeler la fonction sachant que ma frame s'appell doubler un controle image? [ par LOGIK3 ] Bonjour,Alors comme dit le topic du message, je me demande comment qu'on peut doubler un control image dans une frame. J'explique, j'ai une image dans changer l'icone d'un activex [ par cameleon ] quelqu'un sait il comment mettre une icône autre que celle du fichier ctl quand on fait un controle activex, àfin de personnaliser ce controle. Merci inserer une icone [ par nesaipas ] bonjour à tous ma question est fort simple j'ai une imagelist avec dedans 2 icones puis j'ai un controle image ma question est la suivante comment ins Controle d'application [ par papatoux ] Bonjour,A partir d'une application VB, je voudrais agrandir (restaurer)&nbsp;une seconde application VB qui est active mais r&#233;duite en icone. J'a Pb Affichage [ par isaomi ] Bonjour,&nbsp;je d&#233;veloppe en VB6 et j'ai un souci d'affichage. Je place en controle textbox (mais le pb est identique si il s'agit d'1 frame, d' Controle style xp [ par Nos535 ] Bonjour,J'aimerais &#234;tre capable de recr&#233;er exactement le m&#234;me affichage des contacts de Outlook (XP, 2003) avec VB6 ou VB.NET si possib Le style XP et *.manifest [ par violent_ken ] Violent Ken Salut &#224; tous !Bon voil&#224; le probl&#232;me : j'ai cr&#233;&#233; un fichier *.manifest pour styler mon programme &#224; la sauce X controle de style xp [ par teddy_bear ] bonjour tout le monde j'ai un probleme au niveau des contr&#244;les de style xp, j'ai bien appliqu&#233; le tutoriel pos&#233; ici et ca marche pas. Controle DirListBox Style Xp [ par metalcoder ] Bonjour a tous, je cherche la source d'un controle DirListBox mieux fait que celui fournis en standard avec VB. J'aimerais voir par exemple l'icone d


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,41 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.