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

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message par Backup »

.........................
Dernière modification par Backup le ven. 07/oct./2011 12:26, modifié 3 fois.
Thierryfr
Messages : 102
Inscription : mer. 04/avr./2007 16:28

Message par Thierryfr »

quand je lance le porgramme
il ya une erreur au niveau de cette ligne :

DrawingFont ( FontID (0 ))
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

Message par minirop »

idem, problème au chargement de la font ?
Thierryfr
Messages : 102
Inscription : mer. 04/avr./2007 16:28

Message par Thierryfr »

oui c'est au chargement de la font
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

Message 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
:?
Good07
Messages : 308
Inscription : ven. 23/avr./2004 18:08
Localisation : Hérault 34190 Laroque

Message 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
Thierryfr
Messages : 102
Inscription : mer. 04/avr./2007 16:28

Message par Thierryfr »

Merci ça marche :o :o :o :o :o
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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
Good07
Messages : 308
Inscription : ven. 23/avr./2004 18:08
Localisation : Hérault 34190 Laroque

Message 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


bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

héhéhé sympas ton prog :P
Répondre