簡體   English   中英

如何使用 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 個字符放入一個只有 1 個字符寬的 SDL_Rect .

我可以將寬度乘以字符數,但這不是很准確,因為不同的字符具有不同的寬度。

我將如何解決這個問題?

(我只回答了這個,因為我發現了其他人沒有回答)

你可以做這樣的事情。

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

基本上,TTF_SizeText 使您能夠從帶有字體的文本中獲取本機寬度和高度。 然后,您可以根據需要將高度和寬度相乘。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM