You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SDL_ttf获取指定字体与文本的宽高?

获取SDL_ttf文本宽高的封装方案

SDL_ttf官方提供的TTF_SizeText/TTF_SizeUTF8是通过指针输出宽高的,要实现直接返回宽高的形式,只需自己封装一层函数即可,以下是具体实现:

C语言实现

  • 先定义存储宽高的结构体,再封装返回该结构体的函数:
#include <SDL_ttf.h>

typedef struct {
    int width;
    int height;
} TextDimensions;

TextDimensions get_text_dimensions(TTF_Font* font, const char* text) {
    TextDimensions dims = {0, 0};
    if (font != NULL && text != NULL) {
        // 若需处理UTF-8编码的多语言文本,替换为TTF_SizeUTF8
        TTF_SizeText(font, text, &dims.width, &dims.height);
    }
    return dims;
}
  • 使用示例:
TTF_Font* my_font = TTF_OpenFont("font.ttf", 24);
TextDimensions text_size = get_text_dimensions(my_font, "测试文本");
// 直接访问text_size.width和text_size.height获取宽高

C++语言实现

可以利用标准库的std::pair直接返回宽高对,或自定义结构体:

用std::pair实现

#include <SDL_ttf.h>
#include <utility>

std::pair<int, int> get_text_dimensions(TTF_Font* font, const char* text) {
    int w = 0, h = 0;
    if (font && text) {
        TTF_SizeUTF8(font, text, &w, &h); // 优先用UTF-8适配多语言场景
    }
    return {w, h};
}
  • C++17及以上使用示例(支持结构化绑定):
auto [text_width, text_height] = get_text_dimensions(my_font, "Hello SDL_ttf");
// 直接使用text_width和text_height变量
  • 旧版C++兼容使用方式:
std::pair<int, int> text_size = get_text_dimensions(my_font, "Hello SDL_ttf");
int text_width = text_size.first;
int text_height = text_size.second;

内容的提问来源于stack exchange,提问作者Keshav V.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 04:45:57