首页 > 软件开发 > 编程语言 >

SDL2入门(五)文字换行

来源:互联网 2023-03-17 00:16:20 110

这里的SDL代码是在c4droid运行的。Xu5办公区 - 实用经验教程分享!

SDL2文字换行有几种方法。Xu5办公区 - 实用经验教程分享!

方法一:为每一行文字单独渲染,这就需要多个surface、texture,这比较麻烦。Xu5办公区 - 实用经验教程分享!

方法二:利用SDL_ttf.h中提供的几种文字换行函数,不过比较不好用。Xu5办公区 - 实用经验教程分享!

方法三:自己实现文字换行函数。Xu5办公区 - 实用经验教程分享!

......Xu5办公区 - 实用经验教程分享!

这里我用的是方法二。Xu5办公区 - 实用经验教程分享!

工具/原料

  • c4droi、sdl插件
  • 字体文件:DroidSansFallback.ttf

方法/步骤

  • 1

    只需将上一节课的代码修改一处,就可以使用了。Xu5办公区 - 实用经验教程分享!

    修改部分如下图红色标记。Xu5办公区 - 实用经验教程分享!

    这里只解释修改部分,若想了解其他,请查看上一节课。Xu5办公区 - 实用经验教程分享!

    SDL2入门(五)文字换行Xu5办公区 - 实用经验教程分享!

  • 2

    上节课的TTF_RenderUTF8_Blended函数改成了TTF_RenderUTF8_Blended_Wrapped,函数参数也多了一个,即最后一个参数,这里设置为720。它表示生成surface的宽度。Xu5办公区 - 实用经验教程分享!

    SDL2入门(五)文字换行Xu5办公区 - 实用经验教程分享!

  • 3

    TTF_RenderUTF8_Blended_Wrapped这个函数是以空格换行的,比如这里的函数参数“abcdefghijklnm opqrstuvwxyz”,其中m和o之间我加上了空格,就是让它在这里开始换行的。Xu5办公区 - 实用经验教程分享!

    SDL2入门(五)文字换行Xu5办公区 - 实用经验教程分享!

  • 4

    运行结果如下图Xu5办公区 - 实用经验教程分享!

    SDL2入门(五)文字换行Xu5办公区 - 实用经验教程分享!

  • 4本页面未经许可获取自百度经验
  • 5

    如果我把720换成620,会发生什么?Xu5办公区 - 实用经验教程分享!

    文字排乱了,这是因为“abcdefghijklnm”的长度已经超出了620而其中没有空格,如果在其中加上空格就能够正确显示了。Xu5办公区 - 实用经验教程分享!

    SDL2入门(五)文字换行Xu5办公区 - 实用经验教程分享!

  • 6

    我在g和h之间加上了空格。运行结果如图。Xu5办公区 - 实用经验教程分享!

    所以这种方法也不太好。Xu5办公区 - 实用经验教程分享!

    SDL2入门(五)文字换行Xu5办公区 - 实用经验教程分享!

    SDL2入门(五)文字换行Xu5办公区 - 实用经验教程分享!

  • 7

    代码:Xu5办公区 - 实用经验教程分享!

    #includeSDL2/SDL.h>Xu5办公区 - 实用经验教程分享!

    #includeSDL2/SDL_ttf.h>Xu5办公区 - 实用经验教程分享!

    intmain(intargc,char**argv)Xu5办公区 - 实用经验教程分享!

    {Xu5办公区 - 实用经验教程分享!

    SDL_Init(SDL_INIT_VIDEO);Xu5办公区 - 实用经验教程分享!

    SDL_Window*window=SDL_CreateWindow("文字换行",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,720,1280,SDL_WINDOW_SHOWN);Xu5办公区 - 实用经验教程分享!

    SDL_Renderer*renderer=SDL_CreateRenderer(window,-1,SDL_RERER_ACCELERATED);Xu5办公区 - 实用经验教程分享!

    SDL_RenderClear(renderer);Xu5办公区 - 实用经验教程分享!

    TTF_Init();Xu5办公区 - 实用经验教程分享!

    TTF_Font*font=TTF_OpenFont("resource/DroidSansFallback.ttf",100);Xu5办公区 - 实用经验教程分享!

    SDL_Colorcolor={255,255,255,255};Xu5办公区 - 实用经验教程分享!

    SDL_Surface*surface=TTF_RenderUTF8_Blended_Wrapped(font,"abcdefghijklnmopqrstuvwxyz",color,620);Xu5办公区 - 实用经验教程分享!

    TTF_CloseFont(font);Xu5办公区 - 实用经验教程分享!

    TTF_Quit();Xu5办公区 - 实用经验教程分享!

    SDL_Rectbox={0,0,surface->w,surface->h};Xu5办公区 - 实用经验教程分享!

    SDL_Texture*texture=SDL_CreateTextureFromSurface(renderer,surface);Xu5办公区 - 实用经验教程分享!

    SDL_RenderCopy(renderer,texture,NULL,&box);Xu5办公区 - 实用经验教程分享!

    SDL_RenderPresent(renderer);Xu5办公区 - 实用经验教程分享!

    SDL_Delay(2000);Xu5办公区 - 实用经验教程分享!

    SDL_FreeSurface(surface);Xu5办公区 - 实用经验教程分享!

    SDL_DestroyTexture(texture);Xu5办公区 - 实用经验教程分享!

    SDL_DestroyRenderer(renderer);Xu5办公区 - 实用经验教程分享!

    SDL_DestroyWindow(window);Xu5办公区 - 实用经验教程分享!

    SDL_Quit();Xu5办公区 - 实用经验教程分享!

    }Xu5办公区 - 实用经验教程分享!

  • 注意事项

    • 测试c4droid版本为5.96。
    • 如有不足或建议欢迎指正。

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!Xu5办公区 - 实用经验教程分享!


    标签: 编程编程语言

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码