................
................
.........................
Dernière modification par Backup le ven. 07/oct./2011 12:26, modifié 3 fois.
pourtant c'est marqué dans la doc :

Sous Microsoft Windows, le gestionnaire de police de caractères essaiera toujours de trouver une police équivalente à celle demandée, si cette dernière n'est pas disponible. Par exemple, si vous essayez de charger la police "Tim Now Ronin" et qu'elle n'existe pas, une autre police sera chargée automatiquement, en fonction de sa taille, du style etc. Il est donc peu probable que cette commande échoue

Petite modification. Le Texte disparait à Gauche de l'écran et réapparait à droite.
Je n'ai pas trouvé de formule pour calculer automatiquement la valeur de x en fonction du texte à afficher.
J'ai donc appliqué une méthode empirique avec débug X. Je suis sur que tous les caïds de la programmation de ce forum trouverons une solution.

Je n'ai pas trouvé de formule pour calculer automatiquement la valeur de x en fonction du texte à afficher.

J'ai donc appliqué une méthode empirique avec débug X. Je suis sur que tous les caïds de la programmation de ce forum trouverons une solution.

Code : Tout sélectionner
; ondulation de text
; programmé par Oliv
; Purebasic 4.00
; *********** initialisation *********
;coord de départ
x.f = 10
Y.f = 110
;vitesses de départ
vx.f = 10
vy.f = -45
pas.f=0.2
Declare Ondulation(x,Y,Texte.s,r,v,b)
; ***** variables a OLIV *********
; Variables
#HauteurSin = 50 ; Coef qui joue sur la hauteur de la sinusoide
#LargeurSin = 50 ; Coef qui joue sur la largeur de la sinusoide
#VitesseAngle = 1 * #PI / 50 ; vitesse de modification de l'angle de départ du texte
#Vitesse = 50 ; Temps du Delay() qui ralentit/augmente l'animation.
Global angle.f, FontID , long_text_bas
; ****************************************
; ******************************
InitMouse ()
; ******** ** pour le sprite *****************
InitSprite ()
; ***************************************
LoadFont (0, "arial" ,30)
;
OpenWindow (1, 1,1, 1024, 768, "yeeehaaaa" , #PB_Window_SystemMenu ) ; on ouvre une fenetre
OpenWindowedScreen ( WindowID (1) , 0, 0, 1024, 768, 1, 1, 1) ; on met un ecran dedans !!
x= 1024; on commence l'affichage complètement à droite de l'écran
Y=400
Repeat ; boucle principale
Event= WaitWindowEvent () ; on regarde si quelqu'un a cliqué sur la croix pour quitter
; ************************** ton prog ici ****************
Texte.s= "YEEEEHAAAAAA Ceci est un text qui ondule vraiment bien n'est-ce pas ??"
x=x-2
Ondulation(x,Y,Texte.s,255,255,0)
ExamineMouse ()
If MouseButton (2) ; le bouton de souris droit fait quitter !
End
EndIf
; ***************************************************
FlipBuffers ()
ClearScreen ( RGB (0, 0, 0)) ; <--- c'est la place normale pour le clearscreen !!
If x<-1324 ; on teste si la chaine est complètement sortie du côté gauche
x=1024; Si c'est le cas on remet x à la valeur extrème droite de l'écran
EndIf
Until Event= #PB_Event_CloseWindow
Return
Procedure Ondulation(x,Y,Texte.s,r,v,b)
; procedure realisé par OLIV
StartDrawing ( ScreenOutput ()) ; Pour pouvoir utiliser les commandes des dessin 2D.
DrawingMode (1) ; On selectionne le mode pour ne pas avoir de fond derrière les lettres.
FrontColor ( RGB (r,v,b) ) ; On change la couleur.
DrawingFont ( FontID (0)) ; On change la police
angle + #VitesseAngle ; Angle de départ de la sinusoide en radian
If angle >= 2 * #PI
angle = 0
EndIf
; On affiche toute les lettres
PosX = 10 ; Position du caractère
For n = 1 To Len (Texte) ; Pour chaque lettre du texte
Lettre.s = Mid (Texte, n, 1) ; on récupère la lettre à la position n
PosY = 50 + #HauteurSin * Sin (angle + PosX / #LargeurSin ) ; on calcul la position en Y de la lettre
; On part du centre de l'image (50) puis on ajoute un sin
; #HauteurSin fait varier l'amplitude du mouvement
; l'angle mis dans le sinus est d'abord composé de l'angle de départ d'affichage du texte (Angle)
; puis on augmente l'angle au fur et à mesure que l'on affiche des lettres avec le coefficient #LargeurSin qui permet de faire varier la largeur de la sinusoide
DrawText (x+PosX, Y+PosY,Lettre)
PosX + TextWidth (Lettre)
Next
StopDrawing () ; On signife que l'on arrête les fonctions dessin 2D.
EndProcedure
héhéhé sympas ton prog 

Quelques manoucheries : I can't give you anything but love / Stompin' at decca