Bonjour
J'ai un petit problème que je n'avais jamais rencontré avant avec les sf::Text.
Je vous explique précisément ce que je fais : je suis en train de faire un programme, pour le moment tout simple, dans lequel il y a un menu avec dedans des boutons. Ce menu est créé avec un sf::RectangleShape qui a une bordure noire pour bien distinguer le menu.
C'est à l'intérieur de ce bandeau que je place mes boutons, qui ne sont pour l'instant que des simples sf::RectangleShape sur lesquels je mets un sf::Text.
Je ne gère pas les événements pour l'instant.
Mais voilà, ces sf::Text qui sont dans les boutons ont un comportement assez étrange. Lorsque j'affiche le premier d'entre eux, celui-ci se transforme en un ensemble de rectangles noirs, alors que les autres s'affichent normalement.
Voici un screen pour illustrer le problème :
http://www.noelshack.com/2012-50-1355605829-screen-probleme-sftext.jpgJe vous mets également ce code minimal compilable que j'ai préparé :
#include <SFML/Graphics.hpp>
int main()
{
// Définition de la fenêtre
sf::RenderWindow window(sf::VideoMode(800, 600), "Code minimal");
window.setFramerateLimit(30);
// Définition du fond
sf::RectangleShape fond(sf::Vector2f(800, 600));
fond.setFillColor(sf::Color::White);
// Définition du bandeau de menu
sf::RectangleShape bandeau;
bandeau.setOutlineThickness(1.f);
bandeau.setOutlineColor(sf::Color::Black);
bandeau.setPosition(0.f, 0.f);
bandeau.setSize(sf::Vector2f(800, 60));
bandeau.setFillColor(sf::Color::White);
// Définition des boutons
sf::RectangleShape rectangles[3];
sf::Text textes[3];
for(int i = 0 ; i < 3 ; i++)
{
rectangles[i].setOutlineThickness(1.f);
rectangles[i].setSize(sf::Vector2f(180.f, 40.f));
rectangles[i].setFillColor(sf::Color::White);
rectangles[i].setOutlineColor(sf::Color::Black);
textes[i].setColor(sf::Color::Black);
textes[i].setCharacterSize(16);
}
textes[0].setString("Texte 1");
rectangles[0].setPosition(10.f, 5.f);
textes[0].setPosition(75.f, 15.f);
textes[1].setString("Texte 2");
rectangles[1].setPosition(220.f, 5.f);
textes[1].setPosition(265.f, 15.f);
textes[2].setString("Texte 3");
rectangles[2].setPosition(430.f, 5.f);
textes[2].setPosition(475.f, 15.f);
// Boucle principale
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(fond);
window.draw(bandeau);
for(int i = 0 ; i < 3 ; i++)
window.draw(rectangles[i]);
window.draw(textes[0]);
window.draw(textes[1]);
window.draw(textes[2]);
window.display();
}
return EXIT_SUCCESS;
}
J'ai fait quelques tests, et j'ai remarqué que ce n'est pas un sf::Text en particulier qui a le problème, mais le premier qu'on affiche (avec window.draw(); ).
J'ai également inséré une pause après le window.display(); et je me suis aperçu qu'au premier affichage, tous les boutons s'affichent correctement, mais qu'à partir du deuxième les rectangles noirs apparaissent.
Je vous remercie d'avance pour votre aide.