begin process at 2010 02 10 11:18:06
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > FUNKYCOMPONENTS

FUNKYCOMPONENTS


 Information sur la source

Note :
8,5 / 10 - par 6 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Source .NET ( DotNet ) Classé sous :composant, fun, control Niveau :Expert Date de création :05/12/2004 Date de mise à jour :05/12/2004 23:57:32 Vu / téléchargé :11 293 / 964

Auteur : yoannd

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Les FunkyComponents sont une suite de composants ergonomiques que je viens de créer et qui ont pour vocation d'être assez jolis.
Les FunkyComponents regroupent 3 composants pour l'instant :
Le FunkyContainer
le FunkySimpleContainer
et le FunkyLabel

Le FunkyLabel est une étiquette de texte permettant d'avoir un fond en dégradé, et un texte en dégradé de couleurs aussi.
Le FunkySimpleContainer est un composant conteneur dont il est possible de dévinir la couleur de bordure et de fond. Chacune de ces deux couleurs peuvent être un dégradé de couleurs?
Le FunkyContainer, quand à lui, est une version plus élaborée du FunkySimpleContainer. C'est aussi un contrôle conteneur, mais il est possible d'en modifier bien plus d'attributs. En voici la description précise :

Le FunkyContainer est composé d'un header (qui peut correspondre à la partie supérieure d'une fenêtre, par exemple), d'un Container, c'est-à-dire la partie centrale, et d'un footer (qui peut correspondre à une barre de status, pas exemple.
Pour chacun de ces trois éléments, il est possible de définit deux couleurs, qui vont aller en dégradé. L'orientation du dégradé peut-être choisie entre quatres possibilités (horizontal, vertical, et les deux diagonalles).
Le fond du header, du container, et du footer peuvent être assorties d'une texture. A ce propos, je vous conseille d'utiliser des images png transparentes, ou semi-transparentes. Ceci vous permettra d'avoir une texture de fond avec une couleur dégradée. Celà peut faire assez joli.
Le header et le footer peuvent être assorties d'une image, ou plutôt d'une icône.
Le texte du header et du footer peuvent être paramêtrés pour utiliser n'importe quelle police, et taille de police. Il est aussi possible d'utiliser un dégradé de couleurs pour les textes. Enfin, il est possible d'ajouter des décallages à gauche, et en haut/bas, pour mêttre le texte à peu près ou vous voulez.
Le header est aussi agrémenté de plusieurs boutons :
Le bouton Close,
le bouton collapse,
le bouton agrandir,
le bouton réduire,
le bouton tray.

Sur chacun de ces boutons existent des évènements, qui vous pourrez récupérer. Pour ceux qui ne connaissent pas l'utilité de ces boutons, en voici quelques explications :
close : fermer (facile, hein ?).
collapse : c'est un bouton d'enroulement de la fenêtre sur elle même. Le composant devient alors une barre que l'on peut dérouler en appuyant sur le même bouton. En d'autres termes, ce bouton permet de réduire la taille du composant à une barre simple, et ensuite à revenir à la taille initiale.
agrandir : correspond au bouton agrandir de n'importe quelle application windows.
réduire : permet de réduire dans la barre des tâches.
tray : ce bouton sert générallement à mettre une application en Systray (en icone près de l'heure, dans la barre de menu démarrer).

A propos de ces boutons, il peuvent avoir des comportements différents selon l'endroit sur lesquels ils sont posés. Par exemple, si le FunkyContainer est directement posé sur une formn alors le bouton agrandir agrandira la form en question (pour la rendre "maximized") et le composant lui même. Si le composant est dans un autre contrôle conteneur, alors le composant sera agrandi pour tenir dans le contrôle conteneur et en occuper la plus grande superficie possible (en fait, on fait un Dock.Fill).

Chacun de ces boutons ont diverses propriétés, comme par exemple la couleur de fond (en dégradé), la couleur de fond quand la souris est dessus (en dégradé), la couleur de fond quand ils sont enfoncés (en dégradé aussi), et la couleur de bordure (quand ils sont normaux, quand la souris est dessus, et quand ils sont enfoncés, ces 3 couleurs sont en dégradés). Ils ont aussi chacun une taille propre. Vous pouvez faire un bouton close 3 fois plus grand que le bouton collapse, si ca vous chante. Il est aussi possible de définir une couleur pour le dessin du bouton (par ex. la croix du bouton close, les chevrons du bouton collapse, ...).

Les autres possibilités de ce contrôles sont les suivantes :
Il est possible d'assigner une action lorsque l'utilisateur double clique sur la barre de header. Lorsque ceci se produit, soit le contrôle ne fait rien, soit il s'agrandit, soit il se collapse (il s'enroule).
Il est aussi possible de définir des options de mouvement :
- Aucun mouvement : le contrôle ne peut être bougé,
- self : le controle peut être bougé lorsque l'utilisateur l'attrape par le header,
- TotalSelf : le contrôle peut-être bougé par l'utilisateur, même si l'utilisateur l'attrape par un autre endroit que le header.
- Parent et TotalParent : le principe est le même, mais ici, c'est le contrôle parent qui est bougé.
- Form et TotalForm : même principe, mais ici, c'est la fenêtre conteneuse qui bouge (donc tout bouge).
Vous noterez que si le contrôle est posé à même la form, alors le contrôle parent EST la form elle-même. Ceci signifie que Parent et TotalParent auront respectivement les mêmes effets que Form et TotalForm.

Il est possible aussi de permettre ou non le redimensionnement du contrôle. D'ailleurs, pour celà, il faut bien entendu attraper un des bord du composant. Plus le bord est large (ceci est paramêtrable), plus le composant sera facile à "étirer".


Bien sûr, vous constatez qu'il y a un grand nombre de paramêtres possibles. Il est donc très long de paramêtrer tous ses FunkyContainers les uns à la suite des autres. Pour celà, un système très interessant a été mis en place. Il s'agit de la possibilité de charger des thèmes et de les sauvegarder. Il est possible de charger un thème depuis un fichier, mais aussi depuis un flux. A quoi celà sert-il ? et bien celà vous permet de charger simplement votre thème depuis vos ressources. Ainsi, un même thème peut être appliqué à plusieurs FunkyContainers.

Exemple :
Vous avez mis dans vos ressources le thème nommé "xptheme". Pour l'appliquer au FunkyContainer nommé funkyContainer1, il suffit de faire ceci :

Assembly a = Assembly.GetExecutingAssembly();
string [] resNames = Assembly.GetExecutingAssembly().GetManifestResourc eNames();
foreach(string s in resNames){
if(s == "xptheme"){
Console.WriteLine(s);
Stream str = a.GetManifestResourceStream(s);
this.funkyConta iner1.LoadConfigFromStream(str);
str.Close();
str = null;
}
}

Oui, mais comment créer des thèmes ? La librairie FunkyComponents est livrée avec une application (TestGraph). Celle-ci vous permet de choisir toutes les propriétés de votre FunkyContainer, et d'enregistrer la config dans un fichier. Ce fichier et en fait un zip, il n'est donc pas nécessaire de rezipper le thème créé par la suite. Le fichier que vous sauvegarderez contiendra aussi toutes les icones, images et diverses textures utilisées dans votre thème. Certains programmeurs rêvent parfois de faire des applications skinnables. Les funkyContainers permettent de mêttre en place ce genre de chose. Il est aussi à noter que vous pouvers indiquer votre nom, et celui de votre thème dans ses propriétés. La copie d'écran que vous pouvez voir est l'application testGraph.

Bien sûr, j'adorerai que mon projet soit utilisé par un grand nombre de personnes, et j'aimerai aussi disposer d'un site internet permettant aux divers utilisateurs d'échanger leurs skins. Ce serait sympa... J'espère aussi que vous pourrez compiler tout ca chez vous. A ce propos, n'oubliez pas que parfois, certaines ressources du projet peuvent être "oubliées" par SharpDevelop s'il ne retrouve pas ses billes (noms de répertoires qui changent, ect...). Il faudra donc que vous remédiez à ceci vous même si vous voulez recompiler les FunkyComponents, mais sachez par avance que tous ce dont vous avez besoin est contenu dans le zip.

Dernière note : Comme je l'ai dit précédemment, tout ceci a été conçu au moyen de SharpDevelop. Il vous faudra aussi le FrameWork version 2.

J'espère que vous trouverez ce composant assez sympa, et je m'excuse par avance si le code n'est pas extrèmement clair/commenté. Cette librairie est plus destinée à l'utilisation qu'à des fins pédagogiques, mais vous pouvez bien entendu gratouiller vous même le code.

Bon, j'ai fait un peu long, mais mon composant à pas mal de propriétés et possibilités. Si j'explique pas, on peut me le reprocher, et ca pourrait peut-être me nuire pour une bonne note (ou un trophé ?) ;-D

Bon codage !

Yoann



 Conclusion

Le composant est dessiné au moyen de l'API windows GDI+. Cette source est compilée avec Le FrameWork 2 et SharpDevelop. La librairie utilise aussi la SharpZipLib, qui est une librairie de zippage, fournie avec SharpDevelop.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

05 décembre 2004 23:44:51 :
C t juste un petit problème avec le zip, rien de grave. J'ai aussi choisi de mettre les exécutables dans le zip. C'et plus pratique pour tester la bête.
05 décembre 2004 23:58:01 :
Réparation d'un léger bug pas trop grave.

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) PIXEL SHADER - CRÉATION, UTILISATION, ET BINDING
Source avec Zip Source avec une capture Source .NET (Dotnet) CRÉATION ET ENVOI DE FICHIERS ZIPPÉS
Source avec Zip Source avec une capture Source .NET (Dotnet) LES RÉFÉRENCES FAIBLES
Source avec Zip Source .NET (Dotnet) EXTENSION DES LISTES GÉNÉRIQUES (DESIGN PATTERN "DECORATEUR"...
Source avec Zip Source avec une capture Source .NET (Dotnet) UN PEU DE 3D AVEC XAML ET BLENDER

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) NOTIFICATIONS DANS UN DELEGATE ASYNCHRONE par olivieram2
Source avec Zip Source avec une capture Source .NET (Dotnet) PIXEL SHADER - CRÉATION, UTILISATION, ET BINDING par yoannd
Source avec Zip Source avec une capture Source .NET (Dotnet) UITYPEEDITOR HACKING, PROPERTYGRID ET LISTVIEW CONFIGURABLES... par gourky
Source avec Zip Source .NET (Dotnet) CONVERTION D'UNE IMAGE EN G-CODE, GRAVURE CNC par gourky
Source avec Zip Source .NET (Dotnet) CAROUSEL EN WPF (USERCONTROL) par CoolSpirit

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) CONTROLER L'UTILISATION DES COMPOSANTS VISUELS SUIVANT LA VE... par Willi
Source avec Zip Source avec une capture Source .NET (Dotnet) LIBRAIRIE TRÈS COMPLETTE DE CONTROLS WINFORMS PERSONNALISÉS par jmenfous
Source avec Zip Source avec une capture Source .NET (Dotnet) THREAD, COMPOSANTS DYNAMIQUES, ASTUCES DE WINFORM par dadamagouil
Source avec Zip Source avec une capture Source .NET (Dotnet) USERCONTROL PYROWINDOW par alvinp
Source .NET (Dotnet) COMPOSANT PEMETTANT DE GÉRER LA CONNEXION À UNE BASE DE DONN... par Godzidane

Commentaires et avis

Commentaire de yoannd le 05/12/2004 23:47:23

J'ai oublié de préciser une chose concernant les boutons close, collapse, agrandir, tray, et réduire. Il est bien entendu possible de les rendre invisibles.

Commentaire de yoannd le 06/12/2004 00:04:02

Message à Coq et à tous ceux qui s'occupent de la CSLib : je serai OK pour que vous intégriez cette source à la CSLib (si vous le voulez). Enfin je veux dire, pour l'instant, vous cherchez du code VB, mais quand vous voudrez faire une CSLib en CSharp, ben cette source sera à votre disposition.

Commentaire de PON le 04/02/2005 00:41:23

Bravo, y'a vraiment bcp de boulot sur ce truc. T'as été sacrément courageux. Je te dirais si'il me rend service mais ça a l'air pas mal.
Tiens, une question qui m'intéresse, moi qui me mets tout juste au développement de contrôles .net. Comment fais-tu pour que ton contrôle soit un conteneur en mode design ? Et est-ce possible à partir d'un contrôle qui hérite de usercontrol (j'imagine que les tiens héritent de control) ?

Commentaire de yoannd le 04/02/2005 07:40:19

Salut !

Pour qu'un contrôle soit conteneur en mode création, il faut le faire dériver non pas de UserControl, mais de System.Windows.Forms.ContainerControl. C'est tout simple en fait :-)
En bref, si je me rappèle bien de tout, voici ce que ca donne quand tu hérites :
- de Form : ben ca fait une feuille normalle.
- de UserControl : Il s'agit d'un composant visuel normal,
- de ContainerControl : ca fait un controle conteneur,
- de Control : Ben ca te fait un contrôle non visuel... c'est à dire qui n'ont pas d'interface graphique (comme le timer, par exemple).

Enfin voila, pour ce qui est de mon contrôle, il y a encore quelques bugs, je pense, mais si ca peut te servir pour un exemple de code, ce sera déjà pas mal :-)

Yo

Commentaire de PON le 05/02/2005 17:17:49

Merci de la réponse. J'avais trouvé de mon côté et y'a mm d'autres solutions qui permettent de le faire en héritant de usercontrol (on garde la commodité de l'interface graphique en design du contrôle).
A propose de bug pour info : ça plante s'il n'y a pas d'icone pour les header et footer.
A +

Commentaire de nico23 le 17/05/2005 22:24:46

Salut, je trouve que ce que tu as fais est vraiment éxélent, cependant étant débutant, je voudrais savoir si je peux utiliser "FunkyContainer" dans un projet C++ .net ? et voir aussi un projet "test" montrant l'utilisation ? merci de votre compréhension !

Commentaire de yoannd le 25/05/2005 20:59:45

Je pense qu'il est possible d'utiliser simplement le funky containter avec C++ .Net. Il suffit juste, à mon avis, de bien configuer la boite à outils de visual studio (ou autre ide). Pour ce qui est de l'exemple d'utilisation, j'aurais bien voulu le mettre, mais je manquait de place dans l'archive.

Commentaire de Bidou le 15/05/2006 09:39:41 administrateur CS

Oui c'est possible, il suffit d'ajouter la référence (dll) au projet.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Problème de propriété d'un web control [ par tof.p ] Bonjour à tous,G créé un composant ASP.Net en c#, il hérite de TextBox. G créé une propriété dans ce composant. Pas de problème, le composant fonction ComboBox - DropDownStyle [ par vdeng ] Je ne sais pas si c'est possible, sans créer un composant personnalisé,Lorsque le composant combobox a le focus,dès qu'on tape une 1ère lettre, on voi Assigner une valeur a : Control.Location.X [ par ben1964 ] Je voudrais savoir comment Assigner une valeur dans : Control.Location.X ou Control.Location.Y Le control pour mon cas est le PictureBox . J'ai essayè Composant WebClient [ par ennixo ] Bonjour, j'utilise le composant WebClient pour faire une requette HTTP et j'aimerais savoir comment je peux récupérer la réponse genre "HTTP 200 OK"me ActiveGantt composant??? [ par rappeur ] Bonjour, j'aimerais savoir s'il n'y pas quelqu'un qui ait déjà programmé avec lde composant ActiveGantt for ASP.NET Web Server Control C# de www.sourc Un Control PictureBox Comme parametre ou arg. [ par ben1964 ] Comment peut-on passer comme argument ou param. Un Control PictureBox à une fonction et l'exploiter dans cette derniere ?Comment declarer la deuxiemme Annuler l'évenement MouseDown || Savoir sur quel composant est le curseur [ par madcorp ] Hello,En fait, mon problème est que lorsque l'on clique sur un composant et que l'on garde le bouton de la souris enfoncé (donc juste MouseDown) et qu le composant utilisé dans la zone de propriété de visual studio [ par grinlen ] Bonjour,je suis à la recherche du composant utilisé par microsoft pour réaliser leur panneau ed propriété des composant dans visual studio.Ca semble ê ToolTip Listview [ par syl2 ] Bonjour,j'utilise Microsoft Visual Studio 2003 et je n'arrive pas à créer un Tooltip sur un composant listview.Lorsque j'insère mon composant tooltip, Dessiner par dessus un control [ par bucherb ] Hello!Tout est dans le titre lol.Est-ce que qqun sait comment dessiner par dessus un control qui se trouve dans une form?Je fais des rectangles mais i


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,045 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales