嵌入式 SDL把字符串生成位图,关于位图的数据大小问题

首先我们来代码吧:

int joseph_creat_bmp_data_show(TTF_Font *font,char *strings,BITMAP_S *osd_bmp_in)
{

#if 0
SDL_Surface *text;
text = (SDL_Surface *)malloc(sizeof(SDL_Surface)); 
memset(text,0,sizeof(SDL_Surface));
#endif


SDL_Color forecol=   { 0x00, 0x00, 0x00, 0x0};
SDL_Surface *text = TTF_RenderUTF8_Solid(font, strings, forecol);  


if(text == NULL)
{
printf("%s:[%d] \n",__FUNCTION__,__LINE__);

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在Linux平台上使用SDL字符串生成固定分辨率的BMP,可以参考以下示例程序: ```c #include <SDL2/SDL.h> #include <SDL2/SDL_ttf.h> #include <stdio.h> #define WIDTH 640 #define HEIGHT 480 #define FONT_SIZE 24 int main(int argc, char* argv[]) { SDL_Window* window = NULL; SDL_Surface* surface = NULL; SDL_Renderer* renderer = NULL; TTF_Font* font = NULL; SDL_Color color = {255, 255, 255, 255}; SDL_Rect rect = {0, 0, WIDTH, HEIGHT}; SDL_Event event; char* text = "Hello, world!"; char* filename = "output.bmp"; SDL_Init(SDL_INIT_VIDEO); TTF_Init(); window = SDL_CreateWindow("SDL BMP Test", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WIDTH, HEIGHT, SDL_WINDOW_SHOWN); renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); font = TTF_OpenFont("arial.ttf", FONT_SIZE); if (!font) { printf("TTF_OpenFont error: %s\n", TTF_GetError()); return 1; } surface = TTF_RenderText_Solid(font, text, color); if (!surface) { printf("TTF_RenderText_Solid error: %s\n", TTF_GetError()); return 1; } SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, surface); SDL_RenderCopy(renderer, texture, NULL, &rect); SDL_SaveBMP(surface, filename); SDL_DestroyTexture(texture); SDL_FreeSurface(surface); TTF_CloseFont(font); SDL_DestroyRenderer(renderer); SDL_DestroyWindow(window); TTF_Quit(); SDL_Quit(); return 0; } ``` 在这个示例程序中,我们使用SDLSDL_ttf库加载Arial字体并渲染“Hello, world!”文本。然后,我们创建一个与窗口分辨率相同的矩形,并使用SDL_RenderCopy函数将渲染好的字体纹理复制到渲染器上。最后,我们使用SDL_SaveBMP函数将渲染器上的内容保存为BMP格式的文件。 注意,在使用SDL_SaveBMP函数保存文件时,需要传入指向SDL_Surface结构体的指针,而不是SDL_Texture结构体的指针。因此,我们需要先将渲染好的纹理复制到一个表面上,然后再保存表面为BMP文件。 另外,如果要生成其他分辨率的BMP文件,可以修改rect结构体的值来指定矩形大小
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值