点击关注 | 开启我们的故事
"三生有幸,来日方长"
系列文章
写在前面
教你用C语言实现文字跑马灯效果,简直是C语言表白神器!
环境:C语言/C++
软件:Visual Studio 2022
C语言简介
C语言是一种通用的高级编程语言,由丹尼斯·里奇在20世纪70年代初开发。C语言的设计目的是为了提供一种简洁、高效、可移植的编程语言,适用于不同平台和操作系统。
C语言之所以成为一种重要的编程语言,是因为它具有以下几个优点:
-
简洁高效:C语言的语法简洁,代码执行效率高。同时,C语言可以直接访问计算机硬件,使得程序员可以更加精细地控制程序的运行。
-
可移植性强:C语言的语法和标准库是跨平台的,可以在不同操作系统和计算机上编写和运行程序。这种跨平台特性使得C语言成为了许多操作系统和软件的主要开发语言。
-
丰富的库函数:C标准库提供了丰富的函数,这些函数可以帮助程序员完成各种任务,如文件处理、字符串处理和数学计算等。这些函数是C程序员必备的工具之一。
-
应用广泛:由于C语言具有高效、可移植和丰富的库函数等优点,它被广泛应用于系统软件、嵌入式系统、游戏开发、科学计算、互联网应用和金融行业等领域。
总体来说,C语言是一种简洁、高效、可移植的编程语言,具有广泛的应用领域。学习C语言可以帮助程序员掌握编程基本原理和技术,为其未来的编程生涯奠定坚实的基础。
**
EasyX简介
**
EasyX是一款基于C++语言的简单易用的图形界面库,可以轻松实现窗口、绘图、动画等功能。它是对Windows GDI和GDI+的封装,使得程序员能够更加方便地进行二维图形绘制和窗口控制。
EasyX提供了丰富多彩的绘图函数,包括绘制线段、矩形、圆形、曲线、文字等,同时还支持多种颜色和渐变效果。此外,EasyX还提供了一些窗口控制函数,使得程序员可以轻松地创建、打开、关闭窗口、设置窗口大小等。
EasyX对于初学者来说非常友好,它的函数名和参数都比较易懂,而且在官方网站上也提供了详细的使用说明和示例代码,帮助用户更快地上手使用。此外,EasyX还提供了一些常用的功能模块,如游戏引擎、音乐播放器等,使得程序员可以更快地开发出功能完备的应用程序。
EasyX支持多种编译器,包括Visual Studio、Code::Blocks、Dev-C++等,用户可以根据自己的喜好选择不同的编译器进行开发。其内置了一些常用的头文件和库文件,使得程序员可以更加方便地编写代码,减少了繁琐的配置工作。
总体来说,EasyX是一款非常实用、易用的图形界面库,适用于想要快速开发二维图形应用程序的C++初学者和开发者。它简洁易懂的函数调用方式和丰富多彩的绘图效果,可以让程序员在短时间内快速实现自己的创意。
**
EasyX下载安装
**
01
进入EasyX官网,点击下载按钮开始下载
0 2
下载完成后进入下载目录,双击.exe文件开始安装
0 3
按如下步骤进行安装即可
文字跑马灯
完整程序
#include <graphics.h>
#include <time.h>
#include <stdio.h>
#include <conio.h>
#include <vector>
using namespace std;
#define MAX_TEXT_SIZE 20 // 最小文字大小
#define MAX_TEXT_COUNT 15 // 最大同时显示的文字数量
#define MAX_TEXT_COUNT 15 // 最大句子数量
#define MAX_TEXT_BUFFER 255 // 每一句文字的最大字符个数
// 文字结构体
struct TextContent
{
int x; // 橫坐标
int y; // 纵坐标
int textWidth; // 句子长度
int textHeight; // 句子高度
double step; // 速度
int color; // 颜色
int size; // 文字大小
int direction; // 方向:默认右边滚动到左边
WCHAR* content; // 文字内容
};
// 定义你想输出的文字,注意句子长度不能超过 MAX_TEXT_BUFFER 个字符,句子数量不能超过 MAX_TEXT_COUNT
WCHAR TEXT_LIST[MAX_TEXT_COUNT][MAX_TEXT_BUFFER] = {
_T("我爱你"),
_T("I Love You!"),
_T("永远爱你"),
_T("你是我年少的欢喜"),
_T("一生一世一双人"),
_T("余生我陪你走"),
_T("陪你到来生"),
_T("春风十里不如你"),
_T("三生有幸来日方长"),
_T("夜很长幸有你"),
_T("爱你的全部"),
_T("踏过八荒四海只为你"),
_T("愿得一人心"),
_T("众里寻他千百度"),
_T("顶峰相见")
};
// 设置字体
LPCTSTR textType = (LPCTSTR)("微软雅黑");
// 存储所有文字数据
TextContent text[MAX_TEXT_SIZE];
// 初始化文字
void InitText(int index, int Width, int Height) {
text[index].x = Width;
text[index].y = rand() % Height;
text[index].size = rand() % MAX_TEXT_SIZE + MAX_TEXT_SIZE; // 设置最小文字大小为 20 个像素
text[index].step = (rand() % 20) + 2;
text[index].direction = (rand() % 2) + 0.5;
text[index].content = TEXT_LIST[(rand() % MAX_TEXT_COUNT)];
text[index].textWidth = textwidth(text[index].content);
text[index].textHeight = textheight(text[index].content);
int color = (int)(text[index].step * 255 / 6.0 + 0.5);
text[index].color = RGB((rand() % 255), (rand() % 255), (rand() % 255));
}
// 初始化文字个数
void InitTexts(int Width, int Height) {
for (int i = 0; i < MAX_TEXT_COUNT; i++) {
InitText(i, Width, Height);
}
}
// 移动文字
void MoveText(int Width, int Height)
{
for (int i = 0; i < MAX_TEXT_COUNT; i++) {
// 删除原来的文字
int textHeight = textheight(text[i].content);
int textWidth = textwidth(text[i].content);
settextcolor(RGB(0, 0, 0));
settextstyle(text[i].size, text[i].size, textType);
outtextxy(text[i].x, text[i].y, text[i].content);
// 计算新位置
text[i].x -= text[i].step;
if ((text[i].x + textWidth) <= 0) {
InitText(i, Width, Height);
}
settextcolor(text[i].color);
settextstyle(text[i].size, 0, textType);
outtextxy(text[i].x, text[i].y, text[i].content);
}
}
// 主函数
int main()
{
srand((unsigned)time(NULL));// 设置随机种子
int Width = GetSystemMetrics(SM_CXSCREEN);
int Height = GetSystemMetrics(SM_CYSCREEN);
initgraph(Width, Height);// 创建绘图窗口
HWND hwnd = GetHWnd(); // 获取绘图窗口句柄
int x = 0; // 窗口左上角横坐标
int y = 0; // 窗口左上角纵坐标
SetWindowPos(hwnd, HWND_TOP, x, y, 0, 0, SWP_NOSIZE); // 设置窗口位置
// 初始化所有文字
InitTexts(Width, Height);
while (!_kbhit())
{
BeginBatchDraw();
MoveText(Width, Height);
FlushBatchDraw();
Sleep(5);
}
EndBatchDraw();
closegraph(); // 关闭绘图窗口
}
具体分析
本程序是一个基于C语言的文字跑马灯程序,可在Windows平台上运行。
程序中主要使用了Windows.h头文件下的相关API函数和graphics.h头文件下的相关绘图函数来实现文字的滚动效果。
程序中定义了一个TextContent结构体,用于存储文字的相关信息,如横坐标、纵坐标、大小、颜色、内容等。同时,还定义了一些常量,如最小文字大小、最大同时显示的文字数量、句子数量等。
在InitText函数中,程序通过随机生成一些文字的相关信息,如大小、速度、方向等,并将其存储到TextContent结构体中。在InitTexts函数中,程序初始化了所有文字的相关信息。
在MoveText函数中,程序通过循环遍历所有已经存在的TextContent结构体,实现文字的滚动效果。具体实现方式为:首先计算出文字的新位置,然后删除原来的文字,最后在新位置上绘制出新的文字。
在主函数中,程序通过获取系统屏幕的宽度和高度来确定绘图窗口的大小,然后调用initgraph函数创建绘图窗口。接着使用GetHWnd函数获取绘图窗口句柄,并使用SetWindowPos函数设置窗口位置。最后,在循环中调用MoveText函数实现文字的滚动效果。
小伙伴们学会了吗,赶紧写一个文字走马灯送给她吧!
运行结果
写在后面
⭐我是一只有趣的兔子,感谢你的喜欢!⭐