如何快速学习:[1]Swift编程语言,Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Ojective-C*共同运行于MacOS和iOS平台,用于搭建基于苹果平台的应用程......
2023-03-17 297 编程语言
这里的SDL代码是在c4droid运行的。
SDL2文字换行有几种方法。
方法一:为每一行文字单独渲染,这就需要多个surface、texture,这比较麻烦。
方法二:利用SDL_ttf.h中提供的几种文字换行函数,不过比较不好用。
方法三:自己实现文字换行函数。
......
这里我用的是方法二。
只需将上一节课的代码修改一处,就可以使用了。
修改部分如下图红色标记。
这里只解释修改部分,若想了解其他,请查看上一节课。
上节课的TTF_RenderUTF8_Blended函数改成了TTF_RenderUTF8_Blended_Wrapped,函数参数也多了一个,即最后一个参数,这里设置为720。它表示生成surface的宽度。
TTF_RenderUTF8_Blended_Wrapped这个函数是以空格换行的,比如这里的函数参数“abcdefghijklnm opqrstuvwxyz”,其中m和o之间我加上了空格,就是让它在这里开始换行的。
运行结果如下图
如果我把720换成620,会发生什么?
文字排乱了,这是因为“abcdefghijklnm”的长度已经超出了620而其中没有空格,如果在其中加上空格就能够正确显示了。
我在g和h之间加上了空格。运行结果如图。
所以这种方法也不太好。
代码:
#includeSDL2/SDL.h>
#includeSDL2/SDL_ttf.h>
intmain(intargc,char**argv)
{
SDL_Init(SDL_INIT_VIDEO);
SDL_Window*window=SDL_CreateWindow("文字换行",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,720,1280,SDL_WINDOW_SHOWN);
SDL_Renderer*renderer=SDL_CreateRenderer(window,-1,SDL_RERER_ACCELERATED);
SDL_RenderClear(renderer);
TTF_Init();
TTF_Font*font=TTF_OpenFont("resource/DroidSansFallback.ttf",100);
SDL_Colorcolor={255,255,255,255};
SDL_Surface*surface=TTF_RenderUTF8_Blended_Wrapped(font,"abcdefghijklnmopqrstuvwxyz",color,620);
TTF_CloseFont(font);
TTF_Quit();
SDL_Rectbox={0,0,surface->w,surface->h};
SDL_Texture*texture=SDL_CreateTextureFromSurface(renderer,surface);
SDL_RenderCopy(renderer,texture,NULL,&box);
SDL_RenderPresent(renderer);
SDL_Delay(2000);
SDL_FreeSurface(surface);
SDL_DestroyTexture(texture);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
}
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
相关文章
如何快速学习:[1]Swift编程语言,Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Ojective-C*共同运行于MacOS和iOS平台,用于搭建基于苹果平台的应用程......
2023-03-17 297 编程语言
web图表开发工具FineReport:[11]连续分组,数据库表数据是按照时间先后录入的,查询的时候希望按照时间先后,某个字段连续相同的话就合并起来显示,这样的报表可以通过相邻连续分组来实现。......
2023-03-17 520 编程语言