2

テキストの文字列が300長すぎると、新しい行にドロップして続行したいとします。これがあなたのやり方だと読みましたが、機能していません-テキストを引き延ばしているだけです。

これを達成する方法は?

const char* message = "example text to test that it drops to a new line."; 
std::string fontFile = "Font/font.ttf";
int fontSize = 16;

TTF_Font *font = nullptr;
    font = TTF_OpenFont(fontFile.c_str(), fontSize);

SDL_Color textColor = { 0, 300, 200 };
SDL_Surface *surf = TTF_RenderText_Blended_Wrapped(font, message, textColor, 300);
    texture = SDL_CreateTextureFromSurface(m_p_Renderer, surf);

int w,h;
TTF_SizeText(font,message,&w,&h);

srcRect.x = 0;
srcRect.y = 0;
destRect.x = 0;
destRect.y = 0;

srcRect.w =w;
srcRect.h = h;

destRect.w =w;
destRect.h = h;
4

1 に答える 1

2

TTF_SizeText(...)エラーが呼び出しにあると思います。設定した境界を認識せず、おそらくエンドラインも無視します。その行を削除して、代わりにこれらを入れてみてください:

int w, h;
w = surf->w;
h = surf->h;

お役に立てば幸いです。

于 2014-03-09T23:43:35.937 に答える