begin process at 2008 05 12 10:05:25
1 170 182 membres
85 nouveaux aujourd'hui
13 956 membres club

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é: 7 454 / 1 142

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

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 ;)
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

  • 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

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011