首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SDL TTF -换行&改变换行的高度?

在SDL TTF中,你可以使用\n来插入换行符,并使用TTF_SetFontLineSkip()函数来改变换行的高度。

以下是一个示例代码,演示如何在SDL TTF中实现换行和改变换行的高度:

代码语言:javascript
复制
#include <SDL2/SDL.h>
#include <SDL2/SDL_ttf.h>

int main() {
    SDL_Init(SDL_INIT_VIDEO);
    TTF_Init();

    SDL_Window* window = SDL_CreateWindow("SDL TTF Example", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 800, 600, SDL_WINDOW_SHOWN);
    SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);

    TTF_Font* font = TTF_OpenFont("arial.ttf", 24);
    SDL_Color color = { 255, 255, 255, 255 };

    SDL_Surface* surface = TTF_RenderText_Blended_Wrapped(font, "This is a long text that will wrap to the next line.", color, 400);
    SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, surface);

    SDL_Rect dstRect = { 100, 100, surface->w, surface->h };

    SDL_RenderCopy(renderer, texture, NULL, &dstRect);
    SDL_RenderPresent(renderer);

    SDL_Delay(2000);

    // 改变换行的高度
    TTF_SetFontLineSkip(font, 40);

    SDL_Surface* surface2 = TTF_RenderText_Blended_Wrapped(font, "This is a long text with increased line height.", color, 400);
    SDL_Texture* texture2 = SDL_CreateTextureFromSurface(renderer, surface2);

    SDL_Rect dstRect2 = { 100, 200, surface2->w, surface2->h };

    SDL_RenderCopy(renderer, texture2, NULL, &dstRect2);
    SDL_RenderPresent(renderer);

    SDL_Delay(2000);

    SDL_DestroyTexture(texture);
    SDL_FreeSurface(surface);
    SDL_DestroyTexture(texture2);
    SDL_FreeSurface(surface2);
    TTF_CloseFont(font);

    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);

    TTF_Quit();
    SDL_Quit();

    return 0;
}

在上述示例中,我们首先初始化SDL和TTF库,创建窗口和渲染器。然后,我们打开字体文件并设置字体大小和颜色。使用TTF_RenderText_Blended_Wrapped()函数,我们创建了一个表面(surface),其中包含了带有换行的文本。我们还使用TTF_SetFontLineSkip()函数将换行的高度设置为40像素。最后,我们将表面转换为纹理(texture),并在渲染器上绘制出来。

请确保你已经正确安装了SDL和SDL TTF库,并将字体文件(如arial.ttf)放在正确的位置。

这只是一个简单的示例,你可以根据你的需求进行扩展和修改。你可以使用其他SDL函数来实现更复杂的文本渲染效果,如描边、阴影等。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python return换行(python中换行)

大家好,又见面了,我是你们朋友全栈君。 代码太长怎么办,反斜杠引号 ‘’来帮忙! 在写list或者较长字符串时候,或者多个循环造成ide不够用时,就需要代码换行了。...主要代码换行有通用反斜杠和针对字符串起作用三引号结构。 1.反斜杠对于一般表达式来说,反斜杠后直接回车即可实现续行, 使用关键在于反斜杠后不能用空格或者其他符号。...len(s)5在转义字符应用中,最常见就是换行符n… print(456),123456 in:python print 输出不换行python 版本 2.7 print123,print456加逗号缺点...换行点要在操作符后边敲回车。 逗号、冒号、分号前不要加空格。 函数命名使用全部小写方式…13.python垃圾回收机制?...此外,比较有意思一点是,python是强制缩进语言,如果换行后不缩进,会报错。

7.1K20

回车与换行故事

以前在学汇编时候,一直不知道老师在换行时,总会打一个换行符和回车符,原来他们还有这么一个故事…....为了解决这个字符丢失问题,研制人员就在每行后面添加了两个表示一行结束字符:一个叫回车(carriage return),相当于告诉打字机,把光标在水平方向上移到最左边;一个叫换行(line feed...这就是回车和换行由来。 后来,计算机出现了,这两个概念也被拿了过来。但是那时候储存设备非常昂贵,一些人认为用两个字符用来表示一行结尾非常浪费,于是产生了分支,不同厂商有不同处理方法。...在这些操作系统中,Unix操作系统每行结尾只有换行,即”\n”;Windows则是回车+换行,即“\r\n”;而Mac系统里则使用回车来代表结尾,即“\r”。...正是这个原因,才会导致我们有时用Windows系统来打开Unix/Mac系统文件时,会出现所有文字变成一行情况,而用Unix和Mac系统打开Windows系统文件时,在每一行结尾会多出一个 ^M

1.9K30

python怎么换行输出数字对齐_python中如何使输出换行「建议收藏」

大家好,又见面了,我是你们朋友全栈君。 Pythonprint()函数输出时,通常输出结果是整行显示出来,这时候我们需要考虑一下,我们输出结果需不需要换行?...不需要换行方法也是嗯容易,这里就不多赘述了,来说说如何做到输出换行: 常用转义符方式:\n#-*-coding:utf-8-*- A = “来看看能不能\n换行。”...print (A) 输出结果来看看能不能 换行。...使用三引号进行换行:”””value1;value2;value3. “””#-*-coding:utf-8-*- print (“”” 这是第一行; 这是第二行; “””) 输出结果这是第一行; 这是第二行...; 通常我们使用两个print()时候,输出结果会两行显示,呐!

4.7K50

css中换行特殊用法

word-break:break-all; 和 word-wrap:break-word;两种写法都是让英文句子在父级宽度不够情况下换行。...两个属性都同样是让文字换行,但存在着细微区别,大部分时候刚接触到这两个属性时会无法区别两个区别 下面讲一下两者区别: word-wrap:break-word; 作用是强制让文字换行。...一般情况下当父级宽度不够时候,不管英文单词自动换行是当一整个单词不够放时,整个单词一起换行到下一行, 看似很合理写法,但是在有些情况下会出现不可预期情况。...在这种情况下,IE创造出一种新属性,word-break:break-all; 它强制文字换行无论一句话到达父级容器宽度时候是不是一整个单词,都会强制换行,使单词断句, 如果碰上一个单词超出父级容器宽度...用法: word-wrap: normal|break-word; word-break:normal|break-all|keep-all; 显然两个样式都可以解决换行问题,那么它们直接区别呢?

2.2K10

python0040_换行与回车不同_通用换行符_universal_newlines

时候 我 在文件里 打了回车\n系统 将0x0a存入字节 进文件换行 自动就有 回车功能 了吗?... 回车换行电传打字机 渐渐 退出了历史舞台当初纸张 变成了 今天显示器打字机按键 也演变为 如今键盘甚至 有了 操作系统 操作系统 是 如何理解 回车换行 呢?...回车加换行 那还有 纯换行 不回车效果 吗?...纯换行换行效果可以用\v\v 在ascii中含义是VT 垂直制表位序号是 11Commodore64 和 macCommondore64 一度 也曾 很流行同样出于 节省空间目的 使用 \r 代替...python解释器对于\n、\r解释方式 就是统一 \n 换行\r 退到行头这种统一 是跨平台 跨系统、跨cpu架构总结对于换行和回车不同层面的理解 电传打字机 两件事经常 一起干但也可以 分别干不同操作系统

3.7K00

js实现html表格标签中带换行文本显示出换行效果

遇见问题 如下内容中我写了几行,但是表格中并未按行显示,换行符反而变成了空格,于是想自己转换下 ?...思考问题 1、可以看到表格内容是后端传来数据,于是想直接在后端转换下,把换行符替换成标签 ?...3、继续想,准备在数据加载后,在js里面处理下,把文本内容中换行符转为标签;但是如果一个内容有多行文字,我就要把它拆分为多个小节,好加,但是这些分开文字怎么连在一起呢,势必还需要继续加标签...把原先每一小节内容放到一个p里。好,就这么干把。。...我第四行跑哪去了?F12看了下,第四行p也是有的啊,好吧,p内容是空它不显示。。。 ? 5、可以看到第2点代码中标粉色地方,我给空p加了个br,还是没能绕过br....好吧这下显示正常了 ?

16.9K30

js android 换行符,关于js对textarea换行处理方法浅析

大家好,又见面了,我是你们朋友全栈君。 前言 本文很简单,就是记录一下js对textarea换行处理。...;haorooms换行符测试1 haorooms换行符测试2 haorooms换行符测试3″ textareaid.value.replace(‘\n’,’ ‘) “haorooms换行符测试 haorooms...换行符测试1 haorooms换行符测试2 haorooms换行符测试3″ 全局替换方案 如上图运行,全局替换一般用如下代码: textareaid.value.split(“\n”).join(“;...小结 文章很短,发现很多网上写法不是很对。把自己调试过程,记录一下,分享给大家!...总结 以上就是这篇文章全部内容了,希望本文内容对大家学习或者工作具有一定参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家支持。

10.9K10

Linux和Windows换行

回车符号和换行符号产生背景 关于“回车”(carriage return)和“换行”(line feed)这两个概念来历和区别。...在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行时候,要用去0.2秒,正好可以打两个字符。...要是在这0.2秒里面,又有新字符传过来,那么这个字符将丢失。 于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束字符。...一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”来历,从它们英语名字上也可以看出一二。...即“\r”,十六进制数值是:0D; 一个直接后果是,Unix系统下文件在Windows里打开的话,所有文字会变成一行;而Windows里文件在Unix下打开的话,在每行结尾可能会多出一个^M符号

5.3K70

使用Printf换行小技巧

人生一切变化,一切魅力。一切美都是由光明和阴影构成。 今天介绍关于Printf玩法,大家可能觉得Printf就是C语言里用来输出,其实不然,在它之中还有着很多好玩。...有什么呢,比如换行,如果你还只知道用\n来换行,那你就太low了。...大家最常用操作: printf("NO1:printf\n");\\换行输出 但是如果要同时打印很长很多字符串时呢,莫非你要: printf("the way... ...hhh"); 遗憾告诉你...只需在最后加一个\(换行标识符)然后按Enter键,记住,这是组合键哦。 需要注意是使用这种在换行时是需要顶格写,不然空格也会被记作字符哦。而下面的操作则不需要担心这个哦。...这样你代码是不是会让别人感觉很高大上,其实还有更好玩,不知你是否记得ANSI C里引入字符串连接。

4.4K30

flutter  TextField换行自适应实现

字号变大控件高度也变高同时保持指定内外边距. 最重要功能: 多行文本. 并且控件高度可以随着换行而增高 自定义最大行数: 即高度不是随着换行无限增高, 指定控件最大行数后,文本框内容就可以滚动....输入框会从一开始显示指定行数高度, 不是随着换行而增高, 这时需要同时添加minLines: 1属性 最好显式添加keyboardType: TextInputType.multiline,属性,...指定了decoration中contentPadding属性, 结果控件高度变化后内边距数值不对 3,4其实是一个问题, 我们期望像Android中wrap_content属性, 字体大小自适应...或者指定Containerconstraints, 现在控件已经能够自行控制高度了!...style: BorderStyle.none, ), ), ), ), ), Text('222'), ] ) 另外网上还有通过LayoutBuilder来实现换行自适应高度

2.3K21
领券