bonsoir à tous,
j'aimerais faire défiler un texte dans un label, de droite à gauche.
j'ai essayé quelque chose, mais ça ne fonctionne pas, alors j'efface tout et je recommence ^^
avez-vous déjà créé une fonction de ce genre là ?
bonsoir à tous,
j'aimerais faire défiler un texte dans un label, de droite à gauche.
j'ai essayé quelque chose, mais ça ne fonctionne pas, alors j'efface tout et je recommence ^^
avez-vous déjà créé une fonction de ce genre là ?
style journal lumineux ?
euh je ne vois pas de quoi tu veux parler, mais je te passe un lien vers une page internet où il y a la même chose en javascript (mais moi je le veux en c# lol)
http://stud1.tuwien.ac.at/~e9125168/javas/jticker.html
Je vois
C'est bien ce que j'evoquais !
Soit tu fait ca lettre par lettre en jouant avec un buffer circulaire dans un string en réassignant chaque fois le text de ton textbox
Soit tu fignole avec les methode drawstring et l'event paint
j'ai fais une fonction qui résigne les lettres une par une, mais elle ne fonctionne pas des masses.
voila mon code :
le problème c'est qu'il n'y a pas de défilement, le texte apparait au bout de plusieurs seconde, et ainsi de suite...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 public int nbEspcaes = 105; public int nbCaracteres = 0; public int exclusionEspace = 0; public int exclusionCaractere = 0; public string texteDefilant = ""; System.Windows.Forms.Timer clockTexteDefilant = new System.Windows.Forms.Timer(); public void TimerTexteDefilant() { try { clockTexteDefilant.Stop(); clockTexteDefilant.Interval = 2000; clockTexteDefilant.Start(); clockTexteDefilant.Tick += new EventHandler(timerTexteDefilant_Tick); } catch (Exception e) { MessageBox.Show(e.ToString()); } } private void timerTexteDefilant_Tick(object sender, EventArgs e) { if ((nbEspcaes - (exclusionEspace + 1)) > 0) { exclusionEspace++; for (int i = 0; i < (nbEspcaes - exclusionEspace); i++) { lblTexteDefilant.Text = texteDefilant + " "; } texteDefilant = texteDefilant + MusiqueEnCour.getFichier(); } else { exclusionCaractere++; texteDefilant = texteDefilant.Substring(exclusionCaractere, (nbCaracteres - exclusionCaractere)); if ((nbCaracteres - exclusionCaractere) == 0) { exclusionEspace = 0; exclusionCaractere = 0; } } lblTexteDefilant.Text = texteDefilant; } // déclenchement sur un bouton ou autre ... texteDefilant = MusiqueEnCour.getFichier(); TimerTexteDefilant();
au final, ça affiche un truc du genre :
votre_musique.mp3votre_musique.mp3votre_musique.mp3votre_musique.mp3
sinon, tu peux faire aussi "assez simple"
Si tu connais le nombre de caractères que tu peux afficher au max dans ta forme, tu crées une chaine de caractère qui est suffisement longue (en copiant le texte si besoin).. et après, tu as une variable Index qui te donne la position dans ta chaine de caractère...
Sur le timer, tu fais un truc genre :
un truc du genre... et ca devrait le faire correctement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 string textToRender = maChaine.SubString(index,nbCar); index++; if(index == longueurDeMaChaine) index = 0;
(dans longueurDe... je mettrais la longueur du texte + 1 pour l'espace qui est ajouter pour séparer deux occurences de ta chaine)
merci pour le lien.
quelques précisions!
pourquoi ai-je mis qu'il fallait 105 espaces ? c'est le nombre d'espaces qu'il faut pour que le titre de la musique n'apparaisse pas dans le label, après j'efface les espace 1 par 1. lorsqu'il n'y a plus d'espace, je grignote les caractères du message 1 par 1...
voila
seulement ça ne marche qu'en théorie >_<
j'ai grandement simplifié mon code, pour un soucis de clarté et de simplicité.
le voici :
Maintenant ça marche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 public int nbEspcaes = 105; public int exclusionCaractere = 0; public int nbCaracteres = 0; public string texteDefilant = ""; public void TimerTexteDefilant() { try { clockTexteDefilant.Stop(); clockTexteDefilant.Interval = 100; clockTexteDefilant.Start(); clockTexteDefilant.Tick += new EventHandler(timerTexteDefilant_Tick); } catch (Exception e) { MessageBox.Show(e.ToString()); } } private void initTexteDefilant() { for (int i = 0; i < nbEspcaes; i++) { texteDefilant = texteDefilant + " "; } texteDefilant = texteDefilant + MusiqueEnCour.getFichier(); nbCaracteres = texteDefilant.Length; } private void timerTexteDefilant_Tick(object sender, EventArgs e) { exclusionCaractere++; int debut = exclusionCaractere; int fin = (nbCaracteres - exclusionCaractere); lblTexteDefilant.Text = texteDefilant.Substring(debut, fin); if (fin == 0) { initTexteDefilant(); } } // fonctions déclenchées sur un bouton Play initTexteDefilant(); TimerTexteDefilant();
merci à tous !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager