c 语言 可以做出非常漂亮的界面。理论上界面只不过是计算机对每一个像素的控制而已。c 完全有这种能力,只不过较复杂。
这个例子看起来就很漂亮嘛。
#include<mathh>
#include<dosh>
#include<graphicsh>
#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/180314);
cosang=cos((float)angle/180314);
for(i=0;i<8;i+=2)
{
usedata[i] =CENTERX+ cosangdata[i]-sinangdata[i+1]+5;
usedata[i+1]=CENTERY+sinangdata[i]+cosangdata[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=hourrate360;
DrawPoly(HourHand,ang,YELLOW);/画时针/
ang=minrate360;
DrawPoly(MiHand,ang, GREEN);/画分针/
ang=secrate360;
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(newtimeti_sec!=curtimeti_sec)/每1秒更新一次时间/
{
if(curpage==0)
curpage=1;
else
curpage=0;
curtime=newtime;
/设置绘图页/
setactivepage(curpage);
/在图页上画表盘/
DrawClock(&curtime);
/设置绘图页为当前可见页/
setvisualpage(curpage);
/0分0秒高声报时/
if(newtimeti_min==0&&newtimeti_sec==0)
HighBeep();
/ 59分55至秒时低声报时/
else if(newtimeti_min==59&&
newtimeti_sec<=59)
LowBeep();/其他时间只发出喀嗒声/
else
Click();
}
}
closegraph();
}
这个一般人都会靠重载控件的paint函数来做让按钮背景透明,失去按钮原来方方正正的边框然后在上面贴一个好看的按钮相应按钮不同状态做不同的处理(比如按下的时候让按钮颜色表按之类的)但是工作量,就是一个大啊重载一两个控件还行
Qt里面还可以用(视图,场景,模型)QGraphicsView,QGraphicsIitem等等这一系列的类来开发不规则控件用起来比较灵活听说Qt Demo 就是用这个框架来开发的
一个书上说比较好用的方法就是用QStyle来写界面的风格,不过对个人能力的要求还是比较搞的搞过一两次,觉得是挺好用比起上两个来说工作量小很多但是要了解QStyle的用法老实说这个东西实在很难
另外你还可以用qss来搞一种Qt中使用的css,虽然官方一直说是参考css搞出来的东西但我怎么看都是一个样
用代码搞了那么久的Qt界面美化一直到qml出现了我爱死他了如果你一定要搞的话我建议你用qml来搞那就是一个给力就是有一点,现在qml的资料少得可怜
最后如果你是初学者的话最好不要去硬搞界面美化这一块很伤的到后面你会慢慢明白搞界面美化不是一个人可以做的事你至少需要一个美工吧呵呵呵呵上述一切均为个人意见仅供参考
最终还是要调用系统的或者第三方的界面库
不管是C也好还是C++也好
比如Qt的界面库 MFC的界面库 windows系统自带的界面库
迅雷用的是迅雷公司自己开发的界面库
Bolt界面引擎是迅雷公司从2009年开始开发的第四代界面库。迅雷7是首个采用该引擎成功开发的产品,目前迅雷旗下大部分客户端产品都基于该引擎开发,并稳定运行于超过35亿台PC上。(这里有一些演示的Demo,下载)
QQ用的是 Dskinlite库
以上就是关于用C语言能把程序的界面做的很漂亮吗全部的内容,包括:用C语言能把程序的界面做的很漂亮吗、想问一下大家,现在QT界面编程中怎么把界面做的好看一点就比如这个界面,这些按钮的效果是用的什么技术、用C语言编写的程序界面能有多好看等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)