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 !

VB.NET 2005 ET GDI+ : LED DISPLAY, PANNEAU DE DIODES : AFFICHEZ UN TEXTE COMME UN SUR UN PANNEAU DE DIODES!


Information sur la source

Catégorie :Control Source .NET ( DotNet ) Classé sous : led, diode, gdi, vbnet, afficheur Niveau : Initié Date de création : 30/10/2006 Vu / téléchargé: 10 078 / 1 349

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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

Description

Cliquez pour voir la capture en taille normale
Ce code est un contrôle écrit en VB .Net 2005 et utilise GDI+ pour dessiner. Son utilité est la même qu'un Label, hormis son côté plus graphique.
Si vous avez déjà vu un afficheur à diodes (comme dans les aéroports) ce contrôle y ressemble. Cette classe hérite de toutes les propriétés de UserControl. Le dessin du contrôle utilise un thread séparé.

Parmis les propriétés disponibles :

- Couleur des diodes (propriété ForeColor)
- Couleur du fond (propriété BackgroundColor)
- Couleur de la grille (propriété GridColor)
- Texte à afficher (propriété MyText)
- Police du texte à afficher (propriété Font)
- Type de déplacement du texte (Aucun, droite vers la gauche, gauche vers la droite : propriété MoveType)
- Vitesse du déplacement (intervalle de temps entre 2 mouvements en millisecondes: propriété TimeInterval)



Ce code sera utile pour ceux qui s'intéressent à la programmation avec GDI+, savoir comment on peut travailler avec du texte et des images en mémoire avant d'afficher le résultat, ceux qui s'intéressent à faire un dessin de contrôle dans un thread séparé...
 

Source

  • Trop de code à poster... Téléchargez le zip.
  • Sinon voici l'idée générale et simplifiée du dessin du contrôle :
  • En mémoire :
  • - Dessiner la grille dans une zone mémoire
  • - Dessiner le texte tel quel (couleur et police) dans une autre zone mémoire
  • - Copier chaque pixel du précédent texte dans une nouvelle zone mémoire, en écartant les pixels (en multipliant leur position X et Y par 3). Ceci sera nos diodes.
  • A l'écran :
  • - Dessiner la grille précédemment construite
  • - Dessiner les diodes
Trop de code à poster... Téléchargez le zip.


Sinon voici l'idée générale et simplifiée du dessin du contrôle :

En mémoire :
- Dessiner la grille dans une zone mémoire
- Dessiner le texte tel quel (couleur et police) dans une autre zone mémoire
- Copier chaque pixel du précédent texte dans une nouvelle zone mémoire, en écartant les pixels (en multipliant leur position X et Y par 3). Ceci sera nos diodes.

A l'écran :
- Dessiner la grille précédemment construite
- Dessiner les diodes

Conclusion

Je n'ai pas trouvé de bugs, mais si vous en trouviez, merci de me le faire savoir ;)
 

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 !
  •   GabSoftware.GabMatrix
    •   GabMatrix
    •   GabMatrixTest
      •   bin
        •   Debug
          • GabMatrix.dllTélécharger ce fichier [Réservé aux membres club]32 768 octets
          • GabMatrix.pdbTélécharger ce fichier [Réservé aux membres club]73 216 octets
          • GabMatrix.xmlTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 808 octets
          • GabMatrixTest.exeTélécharger ce fichier [Réservé aux membres club]36 864 octets
          • GabMatrixTest.pdbTélécharger ce fichier [Réservé aux membres club]71 168 octets
          • GabMatrixTest.vshost.exeTélécharger ce fichier [Réservé aux membres club]5 632 octets
          • GabMatrixTest.xmlTélécharger ce fichier [Réservé aux membres club]Voir ce fichier121 octets
        •   Release
          • GabMatrix.dllTélécharger ce fichier [Réservé aux membres club]28 672 octets
          • GabMatrix.xmlTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 833 octets
          • GabMatrixTest.exeTélécharger ce fichier [Réservé aux membres club]32 768 octets
          • GabMatrixTest.vshost.exeTélécharger ce fichier [Réservé aux membres club]5 632 octets
          • GabMatrixTest.xmlTélécharger ce fichier [Réservé aux membres club]Voir ce fichier121 octets
      •   My Project
      •   obj
        •   Debug
          •   TempPE
            • My Project.Resources.Designer.vb.dllTélécharger ce fichier [Réservé aux membres club]7 680 octets
          • GabMatrixTest.exeTélécharger ce fichier [Réservé aux membres club]36 864 octets
          • GabMatrixTest.Form1.resourcesTélécharger ce fichier [Réservé aux membres club]180 octets
          • GabMatrixTest.pdbTélécharger ce fichier [Réservé aux membres club]71 168 octets
          • GabMatrixTest.Resources.resourcesTélécharger ce fichier [Réservé aux membres club]180 octets
          • GabMatrixTest.vbproj.GenerateResource.CacheTélécharger ce fichier [Réservé aux membres club]842 octets
          • GabMatrixTest.xmlTélécharger ce fichier [Réservé aux membres club]Voir ce fichier121 octets
          • ResolveAssemblyReference.cacheTélécharger ce fichier [Réservé aux membres club]5 176 octets
        •   Release
          •   TempPE
            • My Project.Resources.Designer.vb.dllTélécharger ce fichier [Réservé aux membres club]7 680 octets
          • GabMatrixTest.exeTélécharger ce fichier [Réservé aux membres club]32 768 octets
          • GabMatrixTest.Form1.resourcesTélécharger ce fichier [Réservé aux membres club]180 octets
          • GabMatrixTest.Resources.resourcesTélécharger ce fichier [Réservé aux membres club]180 octets
          • GabMatrixTest.vbproj.GenerateResource.CacheTélécharger ce fichier [Réservé aux membres club]842 octets
          • GabMatrixTest.xmlTélécharger ce fichier [Réservé aux membres club]Voir ce fichier121 octets
          • ResolveAssemblyReference.cacheTélécharger ce fichier [Réservé aux membres club]5 180 octets
        • GabMatrixTest.vbproj.FileList.txtTélécharger ce fichier [Réservé aux membres club]Voir ce fichier801 octets
      • Form1.Designer.vbTélécharger ce fichier [Réservé aux membres club]Voir ce fichier10 236 octets
      • Form1.resxTélécharger ce fichier [Réservé aux membres club]Voir ce fichier6 194 octets
      • Form1.vbTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 983 octets
      • GabMatrixTest.vbprojTélécharger ce fichier [Réservé aux membres club]Voir ce fichier4 750 octets
    • GabSoftware.GabMatrix.slnTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 409 octets
    • GabSoftware.GabMatrix.suoTélécharger ce fichier [Réservé aux membres club]29 184 octets

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de Sirocooo le 31/10/2006 09:07:03

Beau travail
9/10

signaler à un administrateur
Commentaire de ghuysmans99 le 31/10/2006 09:07:38

très joli!

signaler à un administrateur
Commentaire de NISANDSYSTEMS le 31/10/2006 12:13:03

J'ai pas essayer de programmer en VB2005.
En voyant le nombre de fichiers qu'il faut pour faire cela, il y a de quoi se poser certaines questions sur la portabilité ou fiabilité de VB2005???

Je ne donne aucune critique sur tous ceux qui programment sur ce language.
Est-il fiable et souple comme son déscendant? Peut-etre?
Pour moi perso, il ne ma pas encore convaincu.

Sur ce bonne prog a à tous.

signaler à un administrateur
Commentaire de GabSoftware le 01/11/2006 02:57:50

Merci à vous! :)
Si vous avez des suggestions ou des améliorations possibles, je suis preneur ;)


>> nisandsystems,

VB 2005 est très fiable, bien plus que vb 2006, et les possibilités sont bien plus étendues. Quant au nombre de fichiers, un bon nombre sont générés automatiquement, en fait tu n'as à écrire qu'un fichier par classe, le reste est généré tout seul.

signaler à un administrateur
Commentaire de badrbadr le 01/11/2006 21:52:03

VB 2006? tu voulais dire VB 6 :D

signaler à un administrateur
Commentaire de GabSoftware le 02/11/2006 18:25:29

oui, désolé, je parlais de vb6 :D

signaler à un administrateur
Commentaire de ianis24 le 10/11/2006 14:09:19

Bizard , ça ne marche pas chez moi...J'ai pourtant vb 2005 et vb6.

signaler à un administrateur
Commentaire de tmpdev le 14/11/2006 16:26:30

Bonjour,
Je dois dire que vous avez fait du bon boulot, chapeau !
Par contre il y a un plantage quand le texte à afficher est vide.
Je vais essayer de comprendre le code en espérant qu'il n'est pas trop dur à comprendre ! :-)
Merci de partager votre connaissance !

signaler à un administrateur
Commentaire de kimwu le 15/11/2006 06:11:23


Très très bon. Vraiment.
Je voulais faire exactement la même chose. Pour mon programme :)
Tu me sauve beaucoup de temps je vais pouvoir étudier ta manière de faire :)
Mais ton moteur de base semble bien fonctionner à première vue.

Oui moi j'ai des suggestions : les effets !

Voilà, ce que je voulais faire.. la même chose, mais en ajoutant  :

1/ Des fade in   -et-  fade out    
Ces deux là en utilisant les valeur alpha, c'est assez facile en plus, avec une boucle for et des micro pauses dans la boucle..  genre le fade ce fait en 2 sec à peu près - mais tout est configurable tu me diras ;)

2/ Plusieurs couleurs possible
Je veux pouvoir faire scroller du texte en vert, puis un autre texte en rouge par exemple :)
C'est très important pour mon programme et l'effet est garanti
Donc faire deux instances, chaqunes avec des propriétées différentes (on pourrait donc même affecter une police différente etc..)

3 / Un très bel effet de départ...
C'est à dire imagine le controle tout noir.. et tout d'un coup pleins de petits pixels qui arrivent des 4 coins.. scintillant, vers le centre.. et là se forme les lettres :)

Bon celui ci est bien plus compliqué, mais tant que cela : je pensais utiliser des "radoms" mais comme "canalisés"
C'est à dire j'aurais donné une certaines region ou les pixel peuvent être affiché, et donc les randoms seraient calculé uniquement dans ces régions.
Donc on choisi l'espace daffichage.. (exemple du centre vers le coin, en V, donc plus large vers le coin)

L'arrivée que je voudrais faire est la suivante : tout noir, ça part vers le centre en random, puis arrivée au centre, ça tourne en spirale.... et enfin ça crée une ligne horizontale qui part du centre vers les 2 côtés.. pour la longueur de ton texte.
La ça s'arrête, et les lettres se forment :) :)

Bon ok j'arrête de vous expliquer mes folies :p

Je n'ai pas bcp de temps la dessus la maintenant, je travaille sur autre chose, mais un peu plus tard j'essayerai surment :D

signaler à un administrateur
Commentaire de kimwu le 15/11/2006 06:13:55

Ah j'oubliais.. comme cela était exactement un des nombreux points qui rentre dans la conception de mon programme, je mets 10 pour le temps que tu as passé à faire cela :)

signaler à un administrateur
Commentaire de GabSoftware le 21/11/2006 07:51:20

Merci beaucoup! :p

Je sais pas si je pourrais faire tes améliorations, mais je vais voir ce que je peux faire.
Merci aussi pour le commentaire sur mon lecteur audio!

Pour ceux chez qui ça ne marche pas, comment ça ça ne marche pas? ça plante? y'a un message d'erreur? ^^

signaler à un administrateur
Commentaire de kimwu le 25/11/2006 06:17:27


Cool :)

signaler à un administrateur
Commentaire de biboone le 13/12/2006 12:16:01

Vraiment un beau boulot !!!

Pour le plantage lorsque le texte est vide, j'ai rajouté une ligne dans la procédure
Private Sub Initialisation() (de GabMatrix.vb)
.
.
.
        'dessine le modèle
        btmodel = New Bitmap(Me.Width, Me.Height)
        bgmodel = Graphics.FromImage(btmodel)
        size = bgmodel.MeasureString(Me.MyText, Me.Font, 1000000)
' --------   Correction Bug Plantage texte vide
        If size.Width = 0 Then size.Width = 1
' -------- Fin correction
        btmodel = New Bitmap(Convert.ToInt32(size.Width), Me.Height)
.
.
.

Encore bravo !
10/10

signaler à un administrateur
Commentaire de aybe81 le 24/12/2006 22:03:31

Très bon boulot,

J'avais essayé d'en faire un à partir d'un source en C++, j'ai laché l'affaire ...

En essayant de lancer le projet, il y a une erreur mais ca n'est pas grave;
il faut simplement faire Rebuild et lancer le programme dans le dossier \Release du projet.

signaler à un administrateur
Commentaire de aybe81 le 24/12/2006 22:04:23

J'ai oublié de dire, code propre et facile à lire :-))

signaler à un administrateur
Commentaire de GabSoftware le 19/01/2007 23:16:27

merci beaucoup! :)

signaler à un administrateur
Commentaire de aybe81 le 20/01/2007 01:02:50

salut

je suis en train de travailler sur une version modifiée,

notamment :
la possibilite de scroller dans tous les sens,
une file d'attente qui recoit et fait defiler les messages,

et d'autres idées que j'aimerais inserer aussi,
des themes de couleurs par exemple,,,


quand j'aurais quelque chose de prêt je posterais le code.

ah ouais sinon, parfois en inserant le controle dans un projet,
une erreur avec MoveType apparait mais cela ne gene pas le programme.

@+ :-)

signaler à un administrateur
Commentaire de GabSoftware le 23/01/2007 04:00:21

Ah, pour l'erreur je ne l'ai jamais eue... Je serai curieux de voir ça ;)
Sinon j'ai hâte de voir ta version modifiée. Par contre ce serai sympa que mon nom apparaisse si jamais tu postais ta source quelque part :)

signaler à un administrateur
Commentaire de aybe81 le 23/01/2007 22:15:46

Je n'oublierais pas de donner crédit à mes sources,

Très bon concept, en fait il y a certaines parties
du code que je n'ai pas totalement dechiffré,
J'attends de vraiment connaître le déroulement des événements
car les rajouts que j'ai fait, doivent visiblement être placés
très précisement, sinon ca fonctionne mal.

J'ai commencé à me pencher sur des thèmes de couleurs à ajouter ...

En ce moment je fais autre chose mais
je vais m'y remettre bientôt et le finaliser :-)

signaler à un administrateur
Commentaire de Dnx le 28/08/2007 09:40:03

Très bon boulot gabmatrix!!! vraiment excellente source!
félicitation, 10/10!

aybe81, j'ai hâte de voir ta version modifiée...  :)

signaler à un administrateur
Commentaire de Kevin.Ory le 30/12/2007 16:30:02 9/10

Très beau rendu effectivement, je te met 9

Mais je me permet de critiquer le fait que tu prétend utiliser GDI+. Toi tu utilise les fonctions graphiques du framework .NET, qui elles utilisent GDI+, donc de la à dire "Je maitrise GDI+", c'est bcp dire ;)

En fait je suis tombé sur ta source car moi je veux vraiment utiliser GDI+, c'est à dire gdiplus.dll, car le Graphics managé n'est pas assez performant pour ce que je veux faire (me faut des CachedBitmaps)... j'y avait presque cru ;p

signaler à un administrateur
Commentaire de GabSoftware le 31/12/2007 06:01:15

Alors :
- "Je maitrise GDI+" : je ne vois pas où j'ai pu écrire ça. En plus ce n'est pas vrai du tout ;)
- J'utilise GDI+ par l'intermédiaire du Framework .net
- Le Graphics managé est aussi performant que le non managé je pense
- Par CachedBitmaps, si tu veux dire, dessiner dans un buffer puis l'afficher à l'écran lorsqu'il est tout dessiné, alors c'est ce que je fais, ça évite le flickering. En ce qui concerne les CachedBitmaps, je n'ai pas réussi à trouver de documentation sur le web pour le moment (peut être que cela a été déprécié par MS ?) mais je tâcherai de me renseigner plus.
- Peux-tu dire ce que tu veux faire ? Car si on le programme bien, le Graphics managé est très performant.

signaler à un administrateur
Commentaire de GabSoftware le 31/12/2007 06:05:08

Ah il suffisait d'enlever le S à CachedBitmaps pour trouver toute la doc rêvée.

Essaies donc de regarder ici pour voir si tu trouves ton bonheur : http://search.msdn.microsoft.com/search/Default.aspx?brand=msdn&query=cachedbitmap

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

PILOTER UN AFFICHEUR LCD PAR LE PORT SERIE [ par Ouessan ] IMPOSSIBLE DE TROUVERJE VOUDRAIS ECRIRE LA ROUTINE QUI SUIT EN VB6CELLE CI EST ECRITE EN QBASIC10 OPEN "COM1:9600,N,8,1,CS,DS" for output as #120 PRIN afficheur téléphonique [ par Brolosse ] J'ai un afficheur qui ne fonctionne pas. Et j'aimerais savoir comment capturer les nom de l'applant et son numéro de téléphone. J'ai un code qui ne ma GDI .. doc [ par niedernsill ] Bonjour,Où peux-t-on trouver une petite doc sur les fonctions de la GDI ?Merci API du GDI [ par nico ] Salut, je recherche le moyen de mettre en évidence une fenêtre (comme le spy++) lors que le curseur de la souris pointe dessus. J'ai le hwnd, hdc et l afficheur lcd avec mscomm [ par laulaut ] [size=2]je cherche un peut aide car je voudrais pouvoir ecris sur un afficheur lcd avec une application visual basicmais je suis un peut embete avec u Afficheur Lcd sur port // [ par BABASSE ] J'aimerais interfacer des Lcd de récup (fax) sur le port // du pc, normalement ce doit-etre assez facile, mais visiblement pas tant que ca , je serais VbNet et Unixware [ par ArkaNET ] Salut tous,En tout premier meilleurs voeux Je suis un débutant en VBnet, et je souhaite qqn m'aide à connecter mon applicatiuon (en VBnet ) à une base Lien VBNet / Access [ par billaudd ] Comment faire pour lier un textbox (en vbnet) à un champs d' une base de donnee? OledbdataAdapter, Oledbconnection, dataset... Que faut il employer ? Convertir Touche VBNet [ par gwiwi ] Sur un textbox je souhaite convertir les caracteres saisi en minuscule en majuscule mais en VB.Net je ne trouve pas comment faire.J'ai bien essayé dan Convert touche VBNet [ par gwiwi ] Bonjour,Je cherche a convertir les caracteres minuscules en majuscule dans un textbox sous VB.Net mais je n'y arrive pas.J'ai essayé de voir avec text


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,437 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é.