用 SDL2 在屏幕上打印文本

打印完图片,是时候打印文字了。这里引用了SDL的字体扩展库,SDL2_ttf.lib,需要包含相应的头文件。

环境:SDL2 + VC++2015

下面的代码将在窗口打印一段文字,并对相应的操作做出响应。

这次把错误处理给精简掉了,代码看起来更清爽。

 1 #include <iostream>
 2 #include "SDL.h"
 3 #include "SDL_ttf.h"
 4
 5 int main(int argc, char** argv)
 6 {
 7     //屏幕宽度
 8     const int SCREEN_WIDTH = 680;
 9     const int SCREEN_HEIGHT = 400;
10     //初始化SDL
11     SDL_Init(SDL_INIT_EVERYTHING);
12     //初始化字体库
13     TTF_Init();
14     //创建窗口
15     SDL_Window *window = SDL_CreateWindow("Font Test",
16         SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
17         SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
18     //创建渲染器
19     SDL_Renderer *renderer = SDL_CreateRenderer(window, -1,
20         SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
21
22     //打开字体
23     TTF_Font *font = TTF_OpenFont("XHei.TTC", 30);
24     //文本转表面
25     SDL_Color color = { 255, 255, 255 };
26     SDL_Surface *surf = TTF_RenderText_Blended(font, "Cool, Cooler, Coolest!", color);
27     //表面转纹理
28     SDL_Texture *text = SDL_CreateTextureFromSurface(renderer, surf);
29     //释放资源
30     SDL_FreeSurface(surf);
31     TTF_CloseFont(font);
32
33     bool quit = false;
34     SDL_Event e;
35     //主循环
36     while (!quit)
37     {
38         //事件栈轮询
39         while (SDL_PollEvent(&e))
40         {
41             //按右上角的X或点鼠标退出
42             if (e.type == SDL_QUIT || e.type == SDL_MOUSEBUTTONDOWN) quit = true;
43             //清空渲染器
44             SDL_RenderClear(renderer);
45             //渲染字体
46             SDL_RenderCopy(renderer, text, NULL, NULL);
47             //呈现渲染器
48             SDL_RenderPresent(renderer);
49         }
50     }
51
52     //释放资源
53     SDL_DestroyTexture(text);
54     SDL_DestroyRenderer(renderer);
55     SDL_DestroyWindow(window);
56
57     SDL_Quit();
58
59     return 0;
60 }
时间: 2024-10-15 01:10:05

用 SDL2 在屏幕上打印文本的相关文章

004-实现点击任意屏幕上非文本框点移除键盘

实现点击任意屏幕上非文本框点移除键盘 我们在开发的过程中若要实现此功能只要将下面这些代码拷贝到你要实现的项目里面就可以实现此功能. 代码如下: - (void)viewDidLoad { [super viewDidLoad]; [self setUpForDismissKeyboard]; } - (void)setUpForDismissKeyboard { NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; UI

1418作业(8)多线程 开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID 在屏幕上打印10遍

/****************************************************************************** *题目: 编写一个程序,开启3个线程,这3个线程的ID分别为A.B.C,每个线程将自己的ID * 在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示:如:ABCABC-依次递推. ******************************************************************************

Android 在屏幕上打印LOG

Android开发中需要迅速定位问题,在Android 屏幕上打印LOG,是一个很好的通道 基本的思路:启动LogService读取指定log,使用WindowManager展示到屏幕上 直接上代码 public class LogService extends Service { private ListView listview; private LinkedList<LogLine> logList = new LinkedList<LogLine>(); private L

C语言:在屏幕上打印杨辉三角形

#include <stdio.h> #define num 10 int main() {     int i;     int j;     int a[num][num];     for (i = 0; i < N; i++)     {         a[i][0] = 1;         a[i][i] = 1;     }     for (i = 2; i < num; i++)     {     for (j = 1; j < i; j++)     

在屏幕上打印杨辉三角

#include<stdio.h> #include<stdlib.h> int main() { int i, j, n = 0; int a[17] = { 0, 1 }; int l, r; while (n<1 || n>16) { printf("输入行数:"); scanf_s("%d", &n); } for (i = 1; i <= n; i++) { l = 0; for (j = 1; j <

开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上,要求输出结果必须按ABC的顺序显示:ABCABC

分类: windows编程 C++ 2012-10-27 15:38 3270人阅读 评论(6) 收藏 举报 第四题(迅雷笔试题):编写一个程序,开启3个线程,这3个线程的ID分别为A.B.C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示:如:ABCABC….依次递推. [cpp] view plaincopy #include <stdio.h> #include <process.h> #include <windows.h> #def

C语言实现在屏幕上输出杨辉三角

★在屏幕上打印杨辉三角 #include<stdio.h> int main() { int i = 0, j = 0, num = 0,k = 0; printf("请输入要输出的杨辉三角的行数:"); scanf("%d", &num); for (i = 1; i <= num; i++) { k = 1;         //每行须以1开头,所以将K定义在第二层循环之外 for (j = 1; j <= i; j++) { p

《屏幕上的聪明决策》:4星。人类在手机/电脑上做选择的心理学研究的综述。不流畅的文本有助于理解和记忆,淘汰赛制可以有效降低选择后懊悔。

本书是人类在手机/电脑上做选择的心理学研究的综述,比较可信,有许多有趣的事实与结论.比较重要的结论有这么几个:1:人类对网站.文章的判断很大程度上以来瞬间感知和审美:2:不流畅的文本有助于理解和记忆:3:可选项太多的情况下,可以考虑淘汰赛制,每次让用户从4个选项中选择一个最满意的.这样可以有效降低选择后懊悔. 总体评价4星. 以下是书中一些重要的结论与信息的摘抄,#号后面是kindle电子书中的页码: 1:人的注意力已经成为“21世纪的低硫原油”.如果可以控制人类注意力的杠杆,那么你几乎可以获取

__str__被print函数调用,目的是打印类的内容到屏幕上

# -*- coding: utf-8 -*- #python 27 #xiaodeng #__str__被print函数调用,目的是打印类的内容到屏幕上 class APIError(): def __init__(self, error_code, request): self.error_code = error_code self.request = request def __str__(self): #一般都是return return 'APIError: %s, \nreques