[SFML2] Dopasowanie stringa do okienka
Ostatnio zmodyfikowano 2016-01-09 21:40
qest43 Temat założony przez niniejszego użytkownika |
[SFML2] Dopasowanie stringa do okienka » 2016-01-09 20:38:42 Jeżeli wczytuję sobie jakiś tekst do stringa, i potem chcę go wyświetlić na ekranie, w np. prostokącie z sfmla w ten sposób, jeżeli tekst jest za długi to przechodzi do następnej linijki aby nie wychodził poza obszar. Jak to zrobić? |
|
Gibas11 |
» 2016-01-09 20:48:55 |
|
1aam2am1 |
» 2016-01-09 21:40:39 Fragment mojego programu napisanego nie wiadomo kiedy. std::string tym = "To jest tekst który ma nie wystawać za okno"; std::string tym1; int32_t space = - 1;
for( uint32_t i = 0; i < tym.size(); ) { text.setString( tym1 ); if( text.getGlobalBounds().width < 633 ) { tym1 += tym[ i ]; if( tym[ i ] == ' ' ) { space = i; } if( tym[ i ] == '\n' ) { tym1.pop_back(); tym.erase( 0, i + 1 ); this->message.push_back( tym1 ); tym1.clear(); space = - 1; if( tym.empty() ) { this->message.push_back( "" ); } i = 0; continue; } } else { if( space == - 1 ) { tym1.pop_back(); tym.erase( 0, i + 1 ); this->message.push_back( tym1 ); tym1.clear(); i = 0; continue; } else { tym1.clear(); tym1.insert( 0, tym, 0, space ); tym.erase( 0, space + 1 ); this->message.push_back( tym1 ); tym1.clear(); space = - 1; i = 0; continue; } } ++i; }
if( !tym1.empty() ) { this->message.push_back( tym1 ); }
message - to kontener text - sf::Text z ustalonym fontem i wielkością itd... Na końcu wyświetlam kolejne linie message. To chyba umiesz. TGUI - fragment poniżej - nie mój algorytm std::string text = "To jest tekst który ma nie wystawać za okno";
unsigned int pos = 0; unsigned int size = 0; while( pos + size < text.getSize() ) { tempLine->setText( text.substring( pos, ++size ) ); if( tempLine->getGlobalBounds().width + 4.0f > width ) { label->setText( label->getText() + text.substring( pos, size - 1 ) + "\n" ); pos = pos + size - 1; size = 0; } } label->setText( label->getText() + tempLine->getText() );
tempLine i label to sf::Text |
|
« 1 » |