¿Se puede embellecer la interfaz de un programa utilizando el lenguaje C?
El lenguaje C puede crear interfaces muy hermosas. En teoría, la interfaz no es más que un control informático de cada píxel. c tiene plenamente esta habilidad, pero es más complicado.
Este ejemplo se ve muy bonito.
#include
#include
#include
# define CENTERX 320 /*Marcar posición central*/
#define CENTERY 175
#define CLICK 100 /*Frecuencia de clic*/
#define CLICKDELAY 30 / *Retraso de clic*/
#define HEBEEP 10000 /*Alta frecuencia*/
#define LOWBEEP 500 /*Baja frecuencia*/
#define BEEPDELAY 200 /*Retraso del sonido del tiempo*/
/*Forma de escala del dial*/
int Mrk_1[8]={-5,-160,5,-160,5,-130 ,-5,-130, };
int Mrk_2[8]={-5,-160,5,-160,2,-130,-2- 130, };
/*Forma de la manecilla de hora*/
int HourHand[8]={-3,-100,3,-120,4, 10,-4,10 };
/*Forma del minutero*/
int MiHand[8]={-3,-120,3,-120,4, 10,-4,10}
/*Forma de segunda mano*/
int SecHand[8]={-2,-150,2,-150,3, 10,-3,10};
p>/*Hacer un sonido de clic*/
void Click()
{
sonido(CLIC);
retraso( CLICKDELAY);
nosound();
}
/*Suena la hora*/
void HighBeep()
{
sonido(HEBEEP);
retraso(BEEPDELAY);
sin sonido;
}
/*Decir la hora en voz baja*/
void LowBeep()
{
sonido(LOWBEEP);
}
/*Dibujar un polígono en cualquier ángulo*/
void DrawPoly(int *data,int ángulo,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* datos[i]+cosang*datos[i+1]+.5;
}
setfillstyle(SOLID_FILL,color);
fillpoly( 4, usedata);
}
/*Dibuja el dial*/
void DrawClock(struct time *cutime)
{< / p>
en
t ang;
velocidad horaria flotante,velocidad mínima,secración;
setbkcolor(AZUL);
cleardevice();
setcolor(BLANCO );
/* Dibujar escala*/
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 );/*Dibujar manecilla de hora*/
ang=minrate*360;
DrawPoly(MiHand,ang, GREEN);/*Dibujar manecilla de minutos*/
ang=secrate*360;
DrawPoly(SecHand,ang, RED);/*Dibujar el segundero*/
}
main()
{
int gdriver=EGA,
gmode=EGAHI;
int curpage;
tiempo de estructura hora curtime, nueva hora
initgraph(&gdriver,&gmode,"c:\\tc");
setbkcolor(BLUE);
cleardevice();
gettime(&curtime);
curpage=0;
DrawClock(&curtime);
mientras(1)
{
if(kbhit())
break; /*Presione cualquier tecla para salir*/
gettime(&newtime); time*/ p>
if(newtime.ti_sec!=curtime.ti_sec)/*Actualizar tiempo cada 1 segundo*/
{
if(curpage== 0) p>
curpage=1;
else
curpage=0;
curtime=newtime;
/*Establecer página de dibujo*/
setactivepage(curpage);
/*Dibujar el dial en la página de imagen*/
DrawClock(&curtime);
/*Establecer la página de dibujo como la página actualmente visible*/
setvisualpage(curpage);
/*Hacer sonar la hora en voz alta a los 0 minutos y 0 segundos. */
if (newtime.ti_min==0&&newtime.ti_sec==0)
HighBeep();
/* Susurra el tiempo de 59 minutos a 55 segundos*/
else if(newtime.ti_min==59&
&
newtime.ti_sec<=59)
LowBeep();/*Solo clics en otros momentos*/
else
Hacer clic();
}
}
cerrar gráfico();
}