更改颜色TTF文本SDL C

wljmcqd8  于 2023-04-29  发布在  其他
关注(0)|答案(2)|浏览(187)

我一直在尝试改变TTF文本的颜色,但我不知道如何做到这一点。我有:

SDL_Color color_text = { 0, 0, 0 }; //Text color

SDL_Surface * surface = TTF_RenderText_Solid(font, "text text text text text ", color_text);

但看起来它不能以任何方式改变颜色。如果有必要和可能的话,我可以用另一种方式存储颜色。

mftmpeh8

mftmpeh81#

为了改变文本的任何属性,你需要重新渲染文本。

假设你从一个黑色文本开始,你会有这个:

SDL_Color color_text = { 0, 0, 0 }; // Text color
SDL_Surface* surface = TTF_RenderText_Solid(font, "TEXT", color_text)

这将使"TEXT"为黑色,因为{ 0, 0, 0 }是黑色的RGB代码。
如果要将其设为红色,可以操作值,例如:

color_text.r = 255;
SDL_Surface* surface = TTF_RenderText_Solid(font, "TEXT", color_text)

这将使"TEXT"成为红色,因为color_textr成员被设置为255,使color_text的成员{ 255, 0, 0 }成为红色的RGB代码。

vcirk6k6

vcirk6k62#

这实际上是可能的,而不需要重新渲染文本:
如果您最初应用白色,您可以在表面上使用SDL_GetSurfaceColorMod,或在从其创建的纹理上使用SDL_GetTextureColorMod,以便文本变为彩色复制(例如,在文本中添加SDL_GetTextureColorMod)。例如,到您的主窗口)与SDL_BlitSurface/SDL_RenderCopy

相关问题