设为首页
联系站长
加入收藏

  格言小语:

励志歌曲版

您现在的位置: 主页 >> 论文 >> 理工论文 >> 计算机论文
  欢迎阅读:用C语言实现按钮新技术
用C语言实现按钮新技术
日期:2006-4-7 15:26:40 来源:论文大全 查看:[ ] 作者:未知  点击:

  @@T5S11500.GIF;图1@@

  图1和图2给出了按钮两种状态和图示,图1为按钮弹起时的状态图,其右边及下边的边框色为黑色(0X00),而左边及上边的边框颜色置为亮白(0x0f),而图2则恰恰相反,右边及下边的边框色为亮白,左边及上边为黑色,它反映了按钮被按下的状态。

  在程序应用中,设置某一按钮时,显示图1的状态,再选中这个按钮时,则显示出图2的状态,经过短暂的延时后,恢复到图1的状态,给用户的感觉是按钮被按下后又弹起。在Windows中的按钮就是这样的,3D studio中的部分按钮当被选中时,只显示图2,这时用户可以很清晰地看到凹下的按钮。

  二、程序实现

  主要包括按钮结构的意义和与它有关的几个函数。

  1.结构定义typedef struet Button Def{

  short X1;

  short Y1;

  short X2;

  short Y1;

  } button

  (X1,Y1)和(X2,Y2)分别为按钮左上角和右下角的位置坐标,用于确定按钮的位置和大小。

  为了程序需要,须定义几个常用的量。

  #define START-X bt→X1

  #define START-Y bt→Y1

  #define END-X bt→X2

  #define END-Y bt→Y2

  #define Grap 1(Grap为按钮边框的宽度)

  #define Button White 0x0f

  #define Button Black 0x00

  2.函数定义

  (1)void Button Define(button *bt,Short X1,Short Y,short X2,short 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

  #include

  #include

  #include

  #include

  #include

  #include"button.h"

  #define START-X bt->x1

  #define START-Y bt->y1

  #define END-X bt->x2

  #define END-Y bt->y2

  #define Grap 1

  #defile ScreenBkColor 2

  #define release-color 7

  #define put-color 3

  #define ButtonWhite 0x0f

  #define ButtonBlack 0x00

  #define delay 50000

  #define dis 10

  void ButtonDefine (button *bt.shout.short.short.short);

  void ReleaseButton(button *bt);

  void PutDownButton(button *bt);

  void delay-time(long int);

  main()

  {

  int gdriver=DETECT.gmode=VGAHI:

  button *but,*but1.*but2. *bt,*but3,*but4,*but5,*but6,*but7;

  int ch;

  initgraph(&gdriver,&gmode,"d:\tc");

  setcolor(ScreenBkColor);

  setbkcolor(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) }

  case'1':

  ReleaseButton(but1);break;

  case'2':

  ReleaseButton(but2);break;

  case'3':

  ReleaseButton(but3);break;

  case'4':

  ReleaseButton(but4);break;

  case'5':

  ReleaseButton(but5);break;

  case'6':

  ReleaseButton(but6);break;

  case'7':

  ReleaseButton(but7);break;

  }

  ch=getch();

  if(ch==27)

  break;

  switch(ch)

  {

  case'1':

  PutDownButton(but1);break;

  case'2':

  PutDownButton(but2);break;

  case'3':

  PutDownButton(but3);break;

  case'4':

  PutDownButton(but4);break;

  case'5':

  PutDownButton(but5);break;

  case'6':

  PutDownButton(but6);break;

  case'7':

  PutDownButton(but7);break;

  }

  delay-time(delay);

  }

  closegraph():

  return 0;

  }

  void ButtonDefine(button *bt.short x1,short y1,short x2,short y2)

  {

  START-X=x1;

  START-Y=y1;

  END-X=x2;

  END-Y=y2;

  }

  void ReleaseButton(button *bt)

  {

  int i,j;

  setcolor(7);

  setfillstyle(1,7);

  bar(START-X,START-Y,END-X,END-Y);

  setcolor(Button White);

  setfillstyle(1,7);

  bar(START-X+Grap,START-Y+Grap,END-X-Grap,END-Y-Grap);

  setcolor(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);

  }

  setcolor(ButtonBlack);

  for(j=0;j
  }

  line(END-X,j+END-Y-Grap,START-X+Grap-j,j+END-Y-Grap);

  }

  for(i=0,i
  {

  line(i+END-X+Grap,END-Y-Grap,i+END+X-Grap,START-Y+Grap-i);

  }

  return;

  }

  void PutDownButton(button *bt)

  }

  int i,j;

  setcolor(put-color);

  setfillstyle(1,put-color);

  bar(START-X+Grap,START-Y+Grap,END-X-Grap,END-Y-Grap);

  setcolor(ButtonBlack);

  for(j=0;j<=Grap;j++)

  {

  line(START-X,j+START-Y,END-X-j,j+START-Y);

  ;}

  for (i=0;i
  {

  line (START-X+i,START-Y+Grap,START-X+i,END-Y-i);

  setcolor(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 int i)

  {

  i=0;

  while(i<=delay)

  i++;

  }

  button.h

  typedef struct ButtonDef

  { short x1;

  short y1;

  short x2;

  short y2;

  }button;

  作者:庞剑飞

 感谢阅读:用C语言实现按钮新技术

收藏本页 关闭窗口 返回顶部

·可移植的256色图形用户界面的设计
·深入CD-ROM编程
·STRATEGIES FOR WEB B
·在Windows中显示多幅彩色图像的技术
·DOS界面下通用图形编辑软件的设计
·在TVGA上实现全屏幕动画
·《地籍管理》网络教学的实践与研究
·Processing and Manag
·Implementation of an
·Two Cases Of Chinese

本栏热门文章

湘ICP备05012498号 

Powered By: CD520.Net