Scrolling dans une Picturebox (affichage via Print)
gribouillex
Messages postés172Date d'inscriptionlundi 10 octobre 2005StatutMembreDernière intervention16 mai 2011
-
23 oct. 2006 à 16:56
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 2014
-
24 oct. 2006 à 12:20
Bonjour, j'ai un code de programme permettant de faire du karaoké.
Le texte de celui-ci s'affiche via un timer (4 lignes s'affichent simultanément).
Une fois que la ligne est lue, on déplace tout d'un cran vers le haut dans un sorte de scrolling qui n'en est pas un.
C'est justement ce que j'aimerais corriger, comment intégrer un effet scrolling plus fluide à ce type de code ?
Merci pour toute aide (je suis débutant, donc si vous avez une idée, il faut me le détailler un peu ...)
Private Sub Timer1_Timer()
On Error Resume Next
Dim DeltaTime As Double If Xini 0 Then Xini 1
DoEvents
s = (dmPerf.GetMasterTempo * 1000) - BPM
DeltaTime = (((dmState.GetSeek / 768000) * ppqn) - s)
If Xini + 1 <= UBound(Lyr) Then
If DeltaTime >= Lyr(Xini).TempoTotal Then
Xini = Xini + 1
End If
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 23 oct. 2006 à 20:07
inspire-toi de ceci :
Sur ta form : un cadre Frame1 et dans ton cadre Frame1 : une textBox Text1 tontenant du texte dont les lignes sont séparées par des vbcrlf (Retours Charriot)
Un timer Timer1
Code :
Private hauttexte
Private Sub Form_Activate()
Frame1.BorderStyle = 0
FontSize = Text1.FontSize
hauttexte = TextHeight("aaaaaa")
With Timer1
.Enabled = True
.Interval = 1000
End With
End Sub
Private Sub Timer1_Timer()
Text1.Top = Text1.Top - hauttexte
End Sub
gribouillex
Messages postés172Date d'inscriptionlundi 10 octobre 2005StatutMembreDernière intervention16 mai 2011 24 oct. 2006 à 10:05
Bonjour [auteurdetail.aspx?ID=615490 jmfmarques] et merci !
Alors j'avoue être complètement largué... Je suis du côté
dubutant-bidouilleur, et j'ai l'impression (peut-être à tort) que
l'exemple que tu donnes n'est pas applicable au code que j'ai et que je
souhaite conserver (avec les Print).
Si tu pouvais me donner un amorçe de code qui inclurait mon Timer1, ce serait génial...
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 24 oct. 2006 à 12:20
Je crois que tu charries un peu, là !...
Mais bon !...
Mets une picturebox dans le Frame (à la place de la Textbox)
joute (en dehors du Frame, un bouton de commande command1
Code :
Private hauttexte
Private auclair As String
Const taillefont = 12
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub
Private Sub Form_Activate()
Frame1.BorderStyle = 0
Font = taillefont
hauttexte = TextHeight("aaalaaa")
Frame1.Height = hauttexte * 4
Picture1.ScaleMode = 3
Picture1.BorderStyle = 0
Picture1.BackColor = Frame1.BackColor
With Timer1
.Enabled = False
.Interval = 1000
End With
auclair = "au clair de la lune" & vbCrLf & "mon ami Pierrot" & vbCrLf
auclair = auclair & "Prête-moi ta plume" & vbCrLf & "pour écrire un mot" & vbCrLf
auclair = auclair & "Au clair de la lune" & vbCrLf & "Pierrot répondit" & vbCrLf
auclair = auclair & "Je n'ai pas de plume" & vbCrLf & "Je suis dans mon lit" & vbCrLf
chanson auclair
End Sub
Private Sub Timer1_Timer()
Picture1.Top = Picture1.Top - (hauttexte)
End Sub
Private Sub chanson(texte)
Picture1.Move 0, 0, Frame1.Width, TextHeight(texte)
Picture1.FontSize = taillefont
Picture1.Cls
Picture1.AutoRedraw = True
Picture1.CurrentX = 0
Picture1.Print texte & vbCrLf
End Sub
Et ajuste comme tu l'entends (ou, si tu ne comprends toujours pas ce mécanisme : laisse tomber).
Amitiés