2017-09-03 1 views
-1

En jouant avec SFML, je définis une police mais ne veut toujours pas afficher le texte. Toute aide serait appréciée.SFML - Pas d'affichage du texte

Merci,

Owen

// Choose a font 
Font font; 
font.loadFromFile("fonts/arial.tff"); 

// Set our message font 
scoreText.setFont(font); 

scoreText.setString("Score = 0"); 
scoreText.setCharacterSize(100); 

// Choose a color 
scoreText.setFillColor(Color::White); 

// Position the text 
scoreText.setPosition(20, 20); 

window.draw(scoreText); 
window.display(); 
+0

Où est window.clear()? Assurez-vous également de ne pas dessiner sur un fond blanc. – pmaxim98

+0

mettez font.loadFromFile ("fonts/arial.tff"); dans une condition aussi, afin de vérifier si la police est chargée – pmaxim98

+0

le window.clear est là, oublié de l'inclure et l'arrière-plan est vide. Je pense que la police n'est pas en cours de chargement, donc le chemin de la police peut être incorrect. –

Répondre

0

-Premièrement: Pour pouvoir utiliser votre police, il doit être présent dans les polices dans le dossierdossier principal de votre projet, sinon la fonction loadFromFile() doit renvoyer une valeur false, mais notez que cela est écrit dans la documentation officielle:

La fonction loadFromFile peut parfois échouer sans raison évidente

-Deuxièmement: comme mentionné par @ pmaxim98, vous devez appeler la fonction clear() avant tout dessin, et l'argument de couleur doit être différente de la couleur de remplissage de texte afin que vous pouvez voir le texte affiché.

-Troisièmement: essayer de mettre le fichier de police dans le dossier principal de votre projet et essayez ce code minimal:

#include <SFML/Graphics.hpp> 
#include <iostream> 

using namespace std; 
using namespace sf; 

int main() 
{ 

RenderWindow window(VideoMode(800,600),"TEXT"); 

/****************************************************/ 

//Declare a Font object 
Font font; 

//Load and check the availability of the font file 
if(!font.loadFromFile("arial.ttf")) 
{ 
    cout << "can't load font" << endl; 
} 

//Declare a Text object 
Text text("Score = 0",font); 

//Set character size 
text.setCharacterSize(100); 

//Set fill color 
text.setFillColor(Color::White); 

/****************************************************/ 


while(window.isOpen()) 
{ 
    Event event; 
    while(window.pollEvent(event)) 
    { 
     if(event.type == Event::Closed){window.close();} 
    } 

    //Clear the window 
    window.clear(); 
    //Draw the text 
    window.draw(text); 
    //Display the text to the window 
    window.display(); 
} 

return 0; 
} 

Bonne chance.

+0

Je ne sais absolument pas pourquoi, mais je copié et collé la police arial de polices système. Je suis maintenant téléchargé une police libre de droits et cela fonctionne Merci à tous pour les réponses –