如何使用 SDL2_TTF 自动调整文本宽度

How to automatically adjust width for text with SDL2_TTF

我正在为我的简单 2d SDL_2 游戏制作分数显示。

这是我显示速度(基本上只是分数)的代码部分:

void Renderer::renderText(const char* text, SDL_Rect* destR)
{
   SDL_Surface* surfaceText = TTF_RenderText_Solid(Renderer::font, text, { 255,255,255 });
   SDL_Texture* textureText = SDL_CreateTextureFromSurface(renderer, surfaceText);
   SDL_FreeSurface(surfaceText);

   SDL_RenderCopy(renderer, textureText, NULL, destR);

   SDL_DestroyTexture(textureText);
}

有一个明显的问题,如果我有数字“1”的宽度,文本会被压缩很多数字是“10000”等,因为你必须将 5 个字符放入 SDL_Rect 只有 1 个字符宽。

我可以将宽度乘以字符数,但是由于不同的字符具有不同的宽度,所以这不是很准确。

我该如何解决这个问题?

(我之所以回答这个问题是因为我发现了其他人是如何回答的)

你可以这样做。

SDL_Rect destR = { x, y, 0, 0 };
TTF_SizeText(font, text, &destR.w, &destR.h);

基本上,TTF_SizeText 使您能够从带字体的文本中获取原始宽度和高度。然后你可以根据需要乘以高度和宽度。