Page 1 sur 1

................

Publié : lun. 28/mai/2007 16:15
par Backup
.........................

Publié : lun. 28/mai/2007 16:46
par Thierryfr
quand je lance le porgramme
il ya une erreur au niveau de cette ligne :

DrawingFont ( FontID (0 ))

Publié : lun. 28/mai/2007 16:49
par minirop
idem, problème au chargement de la font ?

Publié : lun. 28/mai/2007 16:50
par Thierryfr
oui c'est au chargement de la font

Publié : lun. 28/mai/2007 17:17
par minirop
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
:?

Publié : lun. 28/mai/2007 17:21
par Good07
Bonjour à tous.

Pour DrawingFont ( FontID (0 )) c'est normal. Une petite erreur à du se glisser dans le programme. :(
Il suffit d'effacer cette instruction de la ligne 42 et de la recopier juste après la ligne 71 (StartDrawing ( ScreenOutput ()).
Voilà ... :D

Publié : lun. 28/mai/2007 17:24
par Thierryfr
Merci ça marche :o :o :o :o :o

Publié : lun. 28/mai/2007 17:38
par Backup
j'avais trouvé aussi :D

Merci quand meme pour l'info
il y a un "DrawingFont" qui trainait :D
Le code est corrigé :D

Publié : lun. 28/mai/2007 20:13
par Good07
Petite modification. Le Texte disparait à Gauche de l'écran et réapparait à droite. :D
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. :D

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



Publié : mer. 30/mai/2007 16:56
par bombseb
héhéhé sympas ton prog :P