Maison > Article > développement back-end > Comment afficher des images et du texte dans le code de langue C
En langage C, vous pouvez afficher des images via la bibliothèque SDL_image (méthode d'utilisation : IMG_Load(file), le fichier est le chemin de l'image) et afficher du texte via la bibliothèque SDL_ttf (méthode d'utilisation : charger la police TTF_OpenFont(file, ptsize), render text TTF_RenderText_Solid( font, text, color), où file est le chemin de la police, ptsize est la taille de la police, text est le contenu du texte et color est la couleur du texte).
Afficher des images et du texte en langage C
En langage C, vous pouvez utiliser les fonctions de la bibliothèque pour afficher des images et du texte. Ce qui suit décrit l'utilisation en détail :
Afficher l'image
Fonction de bibliothèque : SDL_Surface IMG_Load(const char file);
Fonction : Charger l'image à partir du fichier spécifié et renvoyer un pointeur vers le Structure SDL_Surface.
Paramètres :
<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>
Afficher le texte
fonction de bibliothèque : TTF_FONT
TTF_openfont (fichier const char, int pTSize) ; R<code> SDL_Surface* TTF_RenderText_Solid(TTF_Font* font, const char* text, SDL_Color color);
</code>
E fonction : Charger la police et restituer le texte.
Paramètres :
file : Le chemin d'accès au fichier de police à charger.
ptsize : Taille de la police en points.<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!