易语言按钮:用C语言实现按钮新技术



、按钮显示原理
按钮般有按下和弹起两种状态,在3D studio中按钮也有这两种状态,Windows中虽然看到按钮虽是弹起,但细心用户不难发现,当选中按钮时,它有短暂按下状态实际上,它原理很简单,其实是利用改变按钮边框颜色引起人视觉上错觉而达到立体效果,让人们感到屏幕上真有凸起和凹下按钮
应用中,设置某按钮时,显示图1状态,再选中这个按钮时,则显示出图2状态,经过短暂延时后,恢复到图1状态,给用户感觉是按钮被按下后又弹起在Windows中按钮就是这样,3D studio中部分按钮当被选中时,只显示图2,这时用户可以很清晰地看到凹下按钮
2、实现
主要包括按钮结构意义和和它有关几个
1.结构定义typedef struet Button Def{
X1;
Y1;
X2;
Y1;
} button
(X1,Y1)和(X2,Y2)分别为按钮左上角和右下角位置坐标,用于确定按钮位置和大小

为了需要,须定义几个常用
# START-X bt→X1
# START-Y bt→Y1
# END-X bt→X2
# END-Y bt→Y2
# Grap 1(Grap为按钮边框宽度)
# Button White 0x0f
# Button Black 0x00
2.定义
(1)void Button Define(button *bt,Short X1,Short Y, X2, Y2)
用于定义个名为bt按钮大小和位置,其左上角及右下角坐标为(X1,Y1),(X2,Y2)
START-X=X1;
START-Y=Y1;
END-X=X2;
END-Y=Y2;
(2)Void Release Button(button *bt)
显示按钮弹起时状态
(3)Put Down Button(button *bt)该显示按钮按下时状态
下面列出了以上用于定义按钮,显示按钮弹起,按下状态,这个在屏幕上显示7个按钮,按下1~7个数字后就弹起某个按钮,非常方便,需要弹起某个数字就按哪个数字,特别需要指出是,当Gsap大些时,每个按钮,就如同键盘上样,立体感很强,有兴趣读者可以实战操作下,并把这种简明易懂技术用的于工作,以提高工作效率
button.c
#<graphics.h>
#<conio.h>
#<alloc.h>
#<stdio.h>
#<process.h>
#\"button.h\"
# START-X bt->x1
# START-Y bt->y1
# END-X bt->x2
# END-Y bt->y2
# Grap 1
#defile ScreenBkColor 2
# release-color 7
# put-color 3
# ButtonWhite 0x0f
# ButtonBlack 0x00
# delay 50000
# dis 10
void ButtonDefine (button *bt.shout...);
void ReleaseButton(button *bt);
void PutDownButton(button *bt);
void delay-time(long );

{
gdriver=DETECT.gmode=VGAHI:
button *but,*but1.*but2. *bt,*but3,*but4,*but5,*but6,*but7;
ch;
initgraph(&gdriver,&gmode,\"d:\\tc\");
color(ScreenBkColor);
bkcolor(2);
clrscr;
ButtonDefine(but,50,50,600,400);
putDownButton(but);
ButtonDefine(but1,150,200,200,250);
ButtonDefine(but2,200+dis,200,250+dis,250);
ButtonDefine(but3,250+2*dis,200,300+2*dis,250);
ButtonDefine(but4,300+3*dis,200,350+3*dis,250);
ButtonDefine(but5,350+4*dis,200,400+4*dis,250);
ButtonDefine(but6,400+5*dis,200,450+5*dis,250);
ButtonDefine(but7,450+6*dis,200,500+6*dis,250);
while(ch!=27)
{
switch(ch) }
\'1\':
ReleaseButton(but1);;
\'2\':
ReleaseButton(but2);;
\'3\':
ReleaseButton(but3);;
\'4\':
ReleaseButton(but4);;
\'5\':
ReleaseButton(but5);;
\'6\':
ReleaseButton(but6);;


\'7\':
ReleaseButton(but7);;
}
ch=getch;
(ch27)
;
switch(ch)
{
\'1\':
PutDownButton(but1);;
\'2\':
PutDownButton(but2);;
\'3\':
PutDownButton(but3);;
\'4\':
PutDownButton(but4);;
\'5\':
PutDownButton(but5);;
\'6\':
PutDownButton(but6);;
\'7\':
PutDownButton(but7);;
}
delay-time(delay);
}
closegraph:
0;
}
void ButtonDefine(button *bt. x1, y1, x2, y2)
{
START-X=x1;
START-Y=y1;
END-X=x2;
END-Y=y2;
}
void ReleaseButton(button *bt)
{
i,j;
color(7);
fillstyle(1,7);
bar(START-X,START-Y,END-X,END-Y);
color(Button White);
fillstyle(1,7);
bar(START-X+Grap,START-Y+Grap,END-X-Grap,END-Y-Grap);
color(15);
for(j=0;j<=Grap;j)
{
line(START-X,j+START-Y,END-X-j,j+STAT-Y);
}
for(i=0,i<=Grap;j)
{
line(START-X+i,START-Y+Grap,START-X+i,END-Y-i);
}
color(ButtonBlack);
for(j=0;j<Grap;j)
}
line(END-X,j+END-Y-Grap,START-X+Grap-j,j+END-Y-Grap);
}
for(i=0,i<Grap;i)
{
line(i+END-X+Grap,END-Y-Grap,i+END+X-Grap,START-Y+Grap-i);
}
;
}
void PutDownButton(button *bt)
}
i,j;
color(put-color);
fillstyle(1,put-color);
bar(START-X+Grap,START-Y+Grap,END-X-Grap,END-Y-Grap);
color(ButtonBlack);
for(j=0;j<=Grap;j)
{
line(START-X,j+START-Y,END-X-j,j+START-Y);
;}
for (i=0;i<Garp;i)
{
line (START-X+i,START-Y+Grap,START-X+i,END-Y-i);
color(15);
for(j=0,j<=Grap;j)
{
line(END-X,j+END-Y-Grap,START-X+Grap-j,j+END-Y-Grap);
}
for(i=0;i<=Grap;i)
{
line(i+END-X-Grap,END-Y-Grap,i+END-X-Grap,START-Y+Grap-i);
}
}
void delay-time(long i)
{
i=0;
while(i<=delay)
i;
}
button.h
typedef struct ButtonDef
{ x1;
y1;
x2;
y2;
}button;


Tags:  用图片做按钮 易语言按钮控件 c语言按钮 易语言按钮

延伸阅读

最新评论

发表评论