中易网

用C语言能把程序的界面做的很漂亮吗?

答案:3  悬赏:30  
解决时间 2021-02-20 21:57
用C语言能把程序的界面做的很漂亮吗(比如像QQ那样的界面)?

怎么做呢?

我现在写的C程序只能在DOS下运行,看着很丑......
你的程序怎么运行不了?

BGI Error: Graphics not initialized (use 'initgraph')

怎么办?
最佳答案
c 语言 可以做出非常漂亮的界面。理论上界面只不过是计算机对每一个像素的控制而已。c 完全有这种能力,只不过较复杂。
这个例子看起来就很漂亮嘛。

#include
#include
#include
#define CENTERX 320
#define CENTERY 175
#define CLICK 100
#define CLICKDELAY 30
#define HEBEEP 10000
#define LOWBEEP 500
#define BEEPDELAY 200


int Mrk_1[8]={-5,-160,5,-160,5,-130,-5,-130, };
int Mrk_2[8]={-5,-160,5,-160,2,-130,-2-130, };


int HourHand[8]={-3,-100,3,-120,4, 10,-4,10};


int MiHand[8]={-3,-120,3,-120,4, 10,-4,10};


int SecHand[8]={-2,-150,2,-150,3, 10,-3,10};


void Click()
{
sound(CLICK);
delay(CLICKDELAY);
nosound();
}


void HighBeep()
{
sound(HEBEEP);
delay(BEEPDELAY);
nosound;
}


void LowBeep()
{
sound(LOWBEEP);
}


void DrawPoly(int *data,int angle,int color)
{
int usedata[8];
float sinang,cosang;
int i;
sinang=sin((float)angle/180*3.14);
cosang=cos((float)angle/180*3.14);
for(i=0;i<8;i+=2)
{
usedata[i] =CENTERX+ cosang*data[i]-sinang*data[i+1]+.5;
usedata[i+1]=CENTERY+sinang*data[i]+cosang*data[i+1]+.5;
}
setfillstyle(SOLID_FILL,color);
fillpoly(4,usedata);
}


void DrawClock(struct time *cutime)
{
int ang;
float hourrate,minrate,secrate;

setbkcolor(BLUE);
cleardevice();
setcolor(WHITE);


for(ang=0;ang<360;ang+=90)
{
DrawPoly(Mrk_1,ang,WHITE);
DrawPoly(Mrk_2,ang+30,WHITE);
DrawPoly(Mrk_2,ang+60,WHITE);
}
secrate=(float)cutime->ti_sec/60;
minrate=((float)cutime->ti_min+secrate)/60;
hourrate=(((float)cutime->ti_hour/12)+minrate)/12;
ang=hourrate*360;
DrawPoly(HourHand,ang,YELLOW);
ang=minrate*360;
DrawPoly(MiHand,ang, GREEN);
ang=secrate*360;
DrawPoly(SecHand,ang, RED);
}
main()
{
int gdriver=EGA,
gmode=EGAHI;
int curpage;
struct time curtime ,newtime ;
initgraph(&gdriver,&gmode,"c:\\tc");
setbkcolor(BLUE);
cleardevice();
gettime(&curtime);
curpage=0;
DrawClock(&curtime);
while(1)
{
if(kbhit())
break;
gettime(&newtime);
if(newtime.ti_sec!=curtime.ti_sec)
{
if(curpage==0)
curpage=1;
else
curpage=0;
curtime=newtime;

setactivepage(curpage);

DrawClock(&curtime);

setvisualpage(curpage);

if(newtime.ti_min==0&&newtime.ti_sec==0)
HighBeep();

else if(newtime.ti_min==59&&
newtime.ti_sec<=59)
LowBeep();
else
Click();
}
}
closegraph();
}
全部回答

您可以使用第三方的 界面库,比如 skinse,directui界面库

等。都有支持纯c的接口。
能做出来就不错了,效果不能抱啥希望。 C语言中要做图形见面,首先需要设置为图形模式,确定显卡类型,对屏幕进行初始化等等,相关的函数如下: 1. detectgraph() 显示卡检测函数 2. initgraph() 图形初始化函数 3. getdrivername() 获取图形驱动程序名的指针 4. getgraphmode() 获取图形模式函数 5. getmoderange()获取模式值范围函数 6. getmaxmode()获取最大显示模式函数 7. getmodename()获取显示模式名函数 8. graphdefaults()图形设置复位缺省值函数 9. setgraphmode() 设置图形模式函数 10. restorecrtmode() 恢复文本显示模式函数 11. graphresult() 图形操作结果函数 12. grpaherrormsg() 图形错误信息函数 13. setgraphbufsize()设置图形缓冲区大小函数 14. setactivepage() 设置可输出显示页函数 15. setvisualpage() 设置可见显示页数 16. closegraph()关闭图形模式函数
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
曼处地址在什么地方,想过去办事
"两女一杯"什么意思?
本账号今天登陆次数过于频繁 现在登不上什么
北京都市时空装饰设计有限公司西安分公司这个
快乐大本营结束时主持人播报哪些合作伙伴?
苏州市东华试验仪器公司我想知道这个在什么地
甜蜜公主甜品学院是什么?
fifaonline中场球员加点
出塞这首诗中,但使龙城飞将在,不教胡马度阴
云南过桥米线管仲公园店这个地址在什么地方,
金手指推拿理疗在什么地方啊,我要过去处理事
什么是消除或降低噪音振动源的措施
汕头市有没有七D影城
现代途胜09款正时皮带换好一直往外跑怎么回事
咸丰县民族实验小学在什么地方啊,我要过去处
推荐资讯
我在一个单位上班 后辞职我要工资是领导却说
送桥镇自来水缴费处地址在哪,我要去那里办事
一个长方形长和宽都扩大3倍,周长扩大( )倍,
linux中source是什么指令?
郑州摩配商行地址在什么地方,想过去办事
歌词原谅你,允许你在我的生命里
C语言中 所说的字符常量和字符串常量是什么意
十月钓鲤鱼怎么钓?
五四五社地址在哪,我要去那里办事
和事佬烧烤在哪里啊,我有事要去这个地方
北平王罗艺为什么反唐
我今年16岁,昨天把包皮垢拿了下来。。我想知
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?