C语言使用按钮控制动画的运行与暂停

教育   2024-07-03 21:56   宁夏  

简介

在一个循环运行的程序中,我们常常动态的来显示一些东西,如跳动的小球,或者是闪烁的灯光,以及一些动画。

今天就简单的写了一个小案例,使用一个按钮,来控制一个动画的运行与暂停。总体来说不难理解,就是相对于在循环中写了一个判断按钮,如果按钮按下,控制开关打开,循环继续,如果再按下,控制开关关闭,循环结束。这里只分享思路,具体是使用具体套用。

源码

///////////////////////////////////////////////////// 程序名称:暂停与运行// 编译环境:Mictosoft Visual Studio 2013, EasyX_20200315(beta)// 作  者:luoyh <2864292458@qq.com>// 公 众 号:C语言研究// 最后修改:2024-7-3//
#include <graphics.h> #include <conio.h> #include <stdbool.h>
// 定义一个全局变量来控制循环 bool running = true;
// 定义一个函数来处理按钮点击 void HandleButtonClick(int x, int y, int width, int height, ExMessage msg){ if (msg.x >= x && msg.x <= x + width && msg.y >= y && msg.y <= y + height) { // 切换循环控制变量 running = !running; // 这里可以添加额外的逻辑,比如改变按钮的显示 }}
int main(){ // 初始化图形窗口 initgraph(640, 480); setbkcolor(WHITE); cleardevice(); // 按钮的坐标和大小 int buttonX = 240, buttonY = 400, buttonWidth = 100, buttonHeight = 50; BeginBatchDraw(); int i = 0; ExMessage msg; flushmessage(); // 循环直到窗口关闭 while (!_kbhit()) { // 绘制按钮(这里简单用矩形表示) setcolor(BLUE); rectangle(buttonX, buttonY, buttonX + buttonWidth, buttonY + buttonHeight);
// 检查鼠标消息 /*MOUSEMSG msg = GetMouseMsg();*/ peekmessage(&msg,EX_MOUSE); if (msg.message == WM_LBUTTONDOWN) { // 处理按钮点击 HandleButtonClick(buttonX, buttonY, buttonWidth, buttonHeight, msg); } // 如果循环应该继续,则执行一些操作 if (running) { // 这里放置循环中需要执行的操作 // 例如:绘制一些动态图形,更新状态等 setcolor(RED); setfillcolor(RED); fillcircle(i, 240, 50); // 绘制一个红色的圆作为示例 i++; if (i >= 640) { i=0; } } fillcircle(i, 240, 50); // 刷新屏幕 Sleep(10); // 稍微延迟一下,避免过快刷新 FlushBatchDraw(); cleardevice(); } EndBatchDraw(); // 关闭图形窗口 closegraph(); return 0;}


C语言研究
写给自己的笔记,时常写写,时常看看,仅此而已。