在 C 语言中,可以通过SDL_image 库显示图像(使用方法:IMG_Load(file),file 为图像路径),通过SDL_ttf 库显示文本(使用方法:加载字体TTF_OpenFont(file, ptsize),渲染文本TTF_RenderText_Solid(font, text, color),其中 file 为字体路径,ptsize 为字体大小,text 为文本内容,color 为文本颜色)。
在 C 语言中显示图片和文字
在 C 语言中,可以使用库函数来显示图像和文本。下面详细介绍使用方法:
显示图像
库函数: SDL_Surface IMG_Load(const char file);
功能:从指定文件加载图像,并返回一个指向 SDL_Surface 结构的指针。
参数:
示例:
<code class="c">#include <stdio.h> #include <SDL2/SDL.h> #include <SDL2/SDL_image.h> int main() { SDL_Window* window = NULL; SDL_Renderer* renderer = NULL; SDL_Surface* image = NULL; // 初始化 SDL if (SDL_Init(SDL_INIT_VIDEO) < 0) { printf("SDL could not be initialized! SDL Error: %s\n", SDL_GetError()); return 1; } // 创建窗口 window = SDL_CreateWindow("Image Display", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN); if (window == NULL) { printf("Window could not be created! SDL Error: %s\n", SDL_GetError()); return 1; } // 创建渲染器 renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); if (renderer == NULL) { printf("Renderer could not be created! SDL Error: %s\n", SDL_GetError()); return 1; } // 加载图像 image = IMG_Load("image.png"); if (image == NULL) { printf("Unable to load image! SDL_image Error: %s\n", IMG_GetError()); return 1; } // 渲染图像到窗口 SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, image); SDL_Rect dstrect = {0, 0, image->w, image->h}; SDL_RenderCopy(renderer, texture, NULL, &dstrect); // 更新窗口 SDL_RenderPresent(renderer); // 等待用户关闭窗口 SDL_Event e; while (SDL_WaitEvent(&e)) { if (e.type == SDL_QUIT) { break; } } // 释放资源 SDL_DestroyTexture(texture); SDL_FreeSurface(image); SDL_DestroyRenderer(renderer); SDL_DestroyWindow(window); SDL_Quit(); return 0; }</code>
显示文字
库函数: TTF_Font TTF_OpenFont(const char file, int ptsize);
<code> SDL_Surface* TTF_RenderText_Solid(TTF_Font* font, const char* text, SDL_Color color); </code>
功能:加载字体并渲染文本。
参数:
示例:
<code class="c">#include <stdio.h> #include <SDL2/SDL.h> #include <SDL2/SDL_ttf.h> int main() { SDL_Window* window = NULL; SDL_Renderer* renderer = NULL; TTF_Font* font = NULL; SDL_Surface* text_surface = NULL; // 初始化 SDL 和 SDL_ttf if (SDL_Init(SDL_INIT_VIDEO) < 0) { printf("SDL could not be initialized! SDL Error: %s\n", SDL_GetError()); return 1; } if (TTF_Init() == -1) { printf("SDL_ttf could not be initialized! SDL_ttf Error: %s\n", TTF_GetError()); return 1; } // 创建窗口 window = SDL_CreateWindow("Text Display", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN); if (window == NULL) { printf("Window could not be created! SDL Error: %s\n", SDL_GetError()); return 1; } // 创建渲染器 renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); if (renderer == NULL) { printf("Renderer could not be created! SDL Error: %s\n", SDL_GetError()); return 1; } // 加载字体 font = TTF_OpenFont("font.ttf", 24); if (font == NULL) { printf("Font could not be loaded! SDL_ttf Error: %s\n", TTF_GetError()); return 1; } // 渲染文本 SDL_Color color = {255, 255, 255}; text_surface = TTF_RenderText_Solid(font, "Hello World!", color); if (text_surface == NULL) { printf("Text could not be rendered! SDL_ttf Error: %s\n", TTF_GetError()); return 1; } // 渲染文本到窗口 SDL_Texture* text_texture = SDL_CreateTextureFromSurface(renderer, text_surface); SDL_Rect dstrect = {0, 0, text_surface->w, text_surface->h}; SDL_RenderCopy(renderer, text_texture, NULL, &dstrect); // 更新窗口 SDL_RenderPresent(renderer); // 等待用户关闭窗口 SDL_Event e; while (SDL_WaitEvent(&e)) { if (e.type == SDL_QUIT) { break; } } // 释放资源 SDL_DestroyTexture(text_texture); SDL_FreeSurface(text_surface); TTF_CloseFont(font); TTF_Quit(); SDL_DestroyRenderer(renderer); SDL_DestroyWindow(window); SDL_Quit(); return 0; }</code>
以上是c语言代码怎么显示图片和文字的详细内容。更多信息请关注PHP中文网其他相关文章!