用C語言實現按鈕新技術

2021-04-01 00:39:19 字數 3228 閱讀 6959

一、按鈕顯示原理

按鈕一般有按下和彈起兩種狀態,在

3d studio

中按鈕也有這兩種狀態

,windows

中雖然看到按鈕雖是彈起的

,但細心的使用者不難發現

,當選中按鈕時

,它有短暫的按下狀態。實際上

,它的原理很簡單

,其實是利用改變按鈕邊框的顏色引起人視覺上的錯覺而達到立體效果

,讓人們感到螢幕上真有凸起和凹下的按鈕一樣

,如下圖

:@@t5s11500.gif;

圖1@@圖1

和圖2

給出了按鈕兩種狀態和圖示,圖

1為按鈕彈起時的狀態圖

,其右邊及下邊的邊框色為黑色

(0x00),

而左邊及上邊的邊框顏色置為亮白

(0x 0f),而圖2

則恰恰相反

,右邊及下邊的邊框色為亮白

,左邊及上邊為黑色

,它反映了按鈕被按下的狀態。

在程式應用中

,設定某一按鈕時

,顯示圖

1的狀態

,再選中這個按鈕時

,則顯示出圖

2的狀態

,經過短暫的延時後

,恢復到圖

1的狀態

,給使用者的感覺是按鈕被按下後又彈起。在

windows

中的按鈕就是這樣的

,3d studio

中的部分按鈕當被選中時

,只顯示圖

2,這時使用者可以很清晰地看到凹下的按鈕。

二、程式實現

主要包括按鈕結構的意義和與它有關的幾個函式。

1.結構定義

typedef struet button def 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 0x

0f

#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 0x

0f

#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()

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)

delay-time(delay);

}closegraph():

return 0;

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

void releasebutton(button *bt)

for(i=0,i<=grap;j++)

setcolor(buttonblack);

for(j=0;j

用C語言實現FlappyBird

在開始遊戲之前,我們先了解一些輔助函式 void gotoxy int x,int y 將游標調整到 x,y 的位置 void hidecursor 隱藏游標 setconsolecursorinfo getstdhandle std output handle cursor info 我們使用乙個...

C語言 用C語言實現快速排序

快速排序時間複雜度為o nlogn 是陣列相關的題目當中經常會用到的演算法。在c語言中,陣列作為引數傳遞時會轉換為指向陣列起始位址的指標,非陣列形式的資料實參均以傳值形式呼叫。下列兩種形式的傳參時等價的,他們均指向陣列a的初始位址。void test int a void test int a 因此...

用c語言實現佇列 FIFO

佇列是一種先進先出的資料結構,它的儲存表示方式有兩種 順序儲存和鏈式儲存 順序儲存由於要考慮假溢位的情況,所以採用迴圈佇列形式 c語言實現 define queuesize 100 定義佇列的大小 typedef int datatype 定義佇列元素型別 typedef struct circle...