................
Publié : lun. 28/mai/2007 16:15
.........................
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
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