C ++ / SDL визуализировать текст - PullRequest
1 голос
/ 14 сентября 2011

У меня есть небольшое приложение, которое использует SDL_ttf для отображения текста.Это прекрасно работает через: TTF_RenderText_Solid( font, "text here", textColor ); Тем не менее, мне было интересно, как я буду делать рендеринг целых чисел.Я предполагаю, что их сначала нужно привести к строкам, но у меня возникла проблема с этим.В частности, когда я хочу отобразить положение мыши по x и y следующим образом:

if( event.type == SDL_MOUSEMOTION )
{           
    mouse_move = TTF_RenderText_Solid( font, "need mouse x and y here", textColor );
}

Я считаю, что могу получить координаты x и y через event.motion.x и event.motion.y.Это правильно?

Ответы [ 3 ]

3 голосов
/ 14 сентября 2011

Я предполагаю, что сначала их нужно будет привести к строкам

Нет, не приведено, но преобразовано. Самый простой способ - использовать потоки, например:

#include <sstream>

// ...

std::stringstream text;
// format
text << "mouse coords: " << event.motion.x << " " << event.motion.y;
// and display
TTF_RenderText_Solid(font, text.c_str(), textColor);
2 голосов
/ 14 сентября 2011
std::stringstream tmp;
tmp << "X: " << event.motion.x << " Y: " << event.motion.y;
mouse_move = TTF_RenderText_Solid( font, tmp.str().c_str(), textColor );
1 голос
/ 14 сентября 2011

Обычно я использую что-то вроде boost::lexical_cast или boost::format

int r = 5;
std::string r_str = boost::lexical_cast<std::string>(r);

int x = 10, 7 = 4;
std::string f_str = boost::str( boost::format("Need %1% and %2% here") % x % y );

Я стараюсь избегать std::stringstream, если это не повторяется. Вы должны проверить .good() или тому подобное, чтобы увидеть, не удалось ли это, и это не так часто, как вы надеетесь.

...