#include <graphics.h>
#include <conio.h>
#include <stdio.h>
#include <windows.h>
#include <math.h>
#include <string.h>
#define PI 3.1416
int r[3][4]={{30,20,130,60},{170,20,220,60},{260,20,310,60}};
float alpha,R,h0,sim_t;
int button_judge(int x,int y)
if(x>r[0][0] && x<r[0][2] && y>r[0][1] && y<r[0][3])return 1;
if(x>r[1][0] && x<r[1][2] && y>r[1][1] && y<r[1][3])return 2;
if(x>r[2][0] && x<r[2][2] && y>r[2][1] && y<r[2][3])return 3;
return 0;
void init_figure()
int i;
setrop2(R2_COPYPEN);
setlinecolor(BLACK);
setlinestyle(PS_SOLID);
rectangle(30,100,420,330);
setlinestyle(PS_DOT);
for(i=30+39;i<420;i+=39)
line(i,100,i,330);
for(i=100+23;i<330;i+=23)
line(30,i,420,i);
int simulation()
char t[3];
char *out_text;
float dt = 0.01;
float dy = 230/h0;
long int N = (long int)(sim_t/dt);
float *h=(float*)calloc(N,sizeof(float));
float *v=(float*)calloc(N,sizeof(float));
long int i;
float process_duty;
RECT r={370,35,400,65};
init_figure();
setrop2(R2_COPYPEN);
setfillcolor(WHITE);
setlinecolor(WHITE);
fillrectangle(354,19,411,81);
setlinestyle(PS_NULL);
setbkmode(TRANSPARENT);
h[0]=h0;v[0]=0;
BeginBatchDraw();
for(i=1;i<N;i++)
if(h[i-1]>R)
v[i]=v[i-1]-9.8*dt;
else
v[i]=-sqrt(alpha)*v[i-1];
setfillcolor(WHITE);
setlinecolor(WHITE);
fillrectangle(354,19,416,81);
h[i]=h[i-1]+v[i]*dt;
process_duty = (i+1)/(float)(N);
setlinestyle(PS_SOLID);
putpixel(30+(int)(process_duty*390),330-(int)(h[i]*dy),RED);
setfillcolor(BLUE);
setlinestyle(PS_NULL);
fillpie(355,20,415,80,0,process_duty*2*PI);
setfillcolor(WHITE);
fillcircle(385,50,20);
sprintf(t,"%d",(int)(process_duty*100.0));
out_text = strcat(t,"%");
drawtext(out_text,&r,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
Sleep(dt*1000);
FlushBatchDraw();
EndBatchDraw();
free(h);
free(v);
return 0;
int main()
int i,event=0;
char s[30];
short win_width,win_height;
win_width = 480;win_height = 360;
initgraph(win_width,win_height);
for(i=0;i<256;i+=5)
setbkcolor(RGB(i,i,i));
cleardevice();
Sleep(30);
RECT R1={r[0][0],r[0][1],r[0][2],r[0][3]};
RECT R2={r[1][0],r[1][1],r[1][2],r[1][3]};
RECT R3={r[2][0],r[2][1],r[2][2],r[2][3]};
LOGFONT f;
gettextstyle(&f);
_tcscpy(f.lfFaceName,_T("宋体"));
f.lfQuality = ANTIALIASED_QUALITY;
settextstyle(&f);
settextcolor(BLACK);
drawtext("输入参数",&R1,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
drawtext("运行",&R2,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
drawtext("退出",&R3,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
setlinecolor(BLACK);
rectangle(r[0][0],r[0][1],r[0][2],r[0][3]);
rectangle(r[1][0],r[1][1],r[1][2],r[1][3]);
rectangle(r[2][0],r[2][1],r[2][2],r[2][3]);
MOUSEMSG m;
while(true)
m = GetMouseMsg();
switch(m.uMsg)
case WM_MOUSEMOVE:
setrop2(R2_XORPEN);
setlinecolor(LIGHTCYAN);
setlinestyle(PS_SOLID, 3);
setfillcolor(WHITE);
if(button_judge(m.x,m.y)!=0)
if(event != button_judge(m.x,m.y))
event = button_judge(m.x,m.y);
fillrectangle(r[event-1][0],r[event-1][1],r[event-1][2],r[event-1][3]);
if(event!=0)
fillrectangle(r[event-1][0],r[event-1][1],r[event-1][2],r[event-1][3]);
event = 0;
break;
case WM_LBUTTONDOWN:
setrop2(R2_NOTXORPEN);
for(i=0;i<=10;i++)
setlinecolor(RGB(25*i,25*i,25*i));
circle(m.x,m.y,2*i);
Sleep(20);
circle(m.x,m.y,2*i);
switch(button_judge(m.x,m.y))
case 1:
InputBox(s,30,"请输入碰撞时的能量损失率、球的半径、初始高度、仿真时间");
sscanf(s,"%f%f%f%f",&alpha,&R,&h0,&sim_t);
FlushMouseMsgBuffer();
break;
case 2:
simulation();
FlushMouseMsgBuffer();
break;
case 3:
closegraph();
exit(0);
default:
FlushMouseMsgBuffer();
break;
break;
return 0;
希望本文对您有帮助,谢谢阅读。
本书介绍了如何为使用C语言编写的应用程序设计一个“自带汉字环境”的窗口式图形用户界面。书中系统地介绍了VGA显示卡、鼠标、键盘和扩充存储器等设备的编程方法,并在此基础上建立了一个内含式汉字编程环境HANENV,包扩一个头文件和200多个库函数。将HANENV加入Tur-boC之后,就可以在编写应用程序时直接引用其库函数。这些库函数的功能包括汉字的输入、存储和显示;时钟、定时器和闪烁光标;全屏幕数据录人和画图;窗口、滚动条、按键式菜单以及代码表等窗口式界面部件等。同时在HANENV系统中还提供了计算器、调色板、文件目录窗口以及屏幕平滑移动等功能,使用HANENV编写的软件经编译后可以直接在西文DOS环境下运行而具有强大的汉字处理能力。因此HANENV系统是使用C语言编写华丽而实用的用户界面应用程序的最佳编程环境。
用户可以输入两个数字。用户可以选择加法、减法、乘法或除法。显示计算结果。本文介绍了如何在 C++ 中使用 Qt 实现一个简单的图形用户界面(GUI)应用程序。通过创建一个基本的计算器,我们学习了如何设计用户界面、处理用户输入和实现功能。希望您能在此基础上进行扩展,构建更复杂的 GUI 应用程序。GUI 开发不仅能提高我们的编程能力,还能帮助我们更好地理解用户体验和交互设计的原则。
GTK就可以,一个基于C语言的免费、开源、跨平台图形工具包,可以直接使用C语言调用实现图形界面开发,下面我简单介绍一下这个工具包的安装和使用,这里以Windows平台为例:1.首先,下载GTK安装包,这个可以直接到CSDN上下载,一个zip压缩包,直接解压就行,地址https://download.csdn.net/download/qq_34816564/10925737,解压后的文件如下:2....
通过窗口类,我们可以实现自定义的窗口行为和外观。我们首先需要定义一个WNDCLASS结构体变量。如上,我们定义了一个名为wc的WNDCLASS结构体变量,并初始化所有成员为0。使用{0}可以将结构体中的所有成员都设置为默认值。然后我们需要将窗口过程函数的地址赋给WNDCLASS结构体变量的lpfnWndProc成员。窗口过程函数是窗口消息的处理函数,代码如下。然后将当前应用程序的实例句柄赋给WNDCLASS结构体变量的hInstance成员。实例句柄用于标识当前运行的应用程序的实例。
扫雷前言准备工作EasyX的下载一些准备知识头文件的引用图形化界面的创建图形化界面简介鼠标操作提示框
学了那么长时间的C语言,我们所有的一切似乎都被禁锢在黑框框(控制台)里,让人觉得很无趣,学习unity那样的平台又太过困难,那么有没有什么是适合我们这些新手使用的?答案是:有!
EasyX 是针对 C/C++ 的图形库,可以帮助使用C/C++语言的程序员快速上手图形和游戏编程。
这是百度百科上的解释,目前就我的理解,下载并安装Easyx就相当于为我们的VS(或者是别的)增加了一些库函数,以便我们实
最近t哥经过两天三夜不懈的努力下载了Visual Studio 2019准备大干一番(装了躺尸)。安装完毕运行良好,我心甚慰,听到某二货说C语言有啥好的,整天面对着黑不拉几的窗口。当时我就怒怼道:放屁,还可以是白的!! 于是我立马就准备演示给他看:(等等,不会真有人相信我真要用白窗口来震慑他吧) NONONO t哥今天带来的是c语言编程图形化界面easyx...
看到其符号常量的十六进制值,想必我不说你也能看出来,这就是默认值,也就是说,就算我们不使用此标志,也是没有关系的,默认创建的就是这个。可以发现CreateWindow 函数的自由度还是比较高的,但创建的时候需要填写的内容太多了,我们之前只是简单的进行了一个封装,使其完全丧失了自由度,接下来我们进行新一轮的封装,让其为我们后续的开发提供更大的便利。前面那个复选框,你可以发现,他点击后并没有勾选,使用BS_AUTOCHECKBOX (0x00000003)可以创建一个自动复选框样式的按钮。
用C语言实现俄罗斯方块,需要先解决下面几个问题:
1、如何用C语言绘制图形界面
EasyX图形库(http://www.easyx.cn)即TC的图形库在VC下的移植。
包含库#include
先初始化图形窗口
initgraph(WINDOW_WIDTH, WINDOW_HIGH) ;WINDOW_WIDTH为窗口的宽带,WINDOW_HIGH为窗口的高度。
该楼层疑似违规已被系统折叠隐藏此楼查看此楼贴吧内经常有人问C语言是不是只能用于字符终端界面开发,不能用于图形界面。大家也都有回答,需要其他的库。MFC,GTK,QT。本人近期刚用GTK库加上纯C写成了第一个LINUX实用程序。现在与大家分享:主界面程序gmaxtrix.c#include#include"client_socket.h"#define MAX_BUFFER 1024static ...