- 相關(guān)推薦
用C語(yǔ)言實(shí)現(xiàn)按鈕新技術(shù)
一、按鈕顯示原理
按鈕一般有按下和彈起兩種狀態(tài),在3D studio中按鈕也有這兩種狀態(tài),Windows中雖然看到按鈕雖是彈起的,但細(xì)心的用戶(hù)不難發(fā)現(xiàn),當(dāng)選中按鈕時(shí),它有短暫的按下?tīng)顟B(tài)。實(shí)際上,它的原理很簡(jiǎn)單,其實(shí)是利用改變按鈕邊框的顏色引起人視覺(jué)上的錯(cuò)覺(jué)而達(dá)到立體效果,讓人們感到屏幕上真有凸起和凹下的按鈕一樣,如下圖:
@@T5S11500.GIF;圖1@@
圖1和圖2給出了按鈕兩種狀態(tài)和圖示,圖1為按鈕彈起時(shí)的狀態(tài)圖,其右邊及下邊的邊框色為黑色(0X00),而左邊及上邊的邊框顏色置為亮白(0x0f),而圖2則恰恰相反,右邊及下邊的邊框色為亮白,左邊及上邊為黑色,它反映了按鈕被按下的狀態(tài)。
在程序應(yīng)用中,設(shè)置某一按鈕時(shí),顯示圖1的狀態(tài),再選中這個(gè)按鈕時(shí),則顯示出圖2的狀態(tài),經(jīng)過(guò)短暫的延時(shí)后,恢復(fù)到圖1的狀態(tài),給用戶(hù)的感覺(jué)是按鈕被按下后又彈起。在Windows中的按鈕就是這樣的,3D studio中的部分按鈕當(dāng)被選中時(shí),只顯示圖2,這時(shí)用戶(hù)可以很清晰地看到凹下的按鈕。
二、程序?qū)崿F(xiàn)
主要包括按鈕結(jié)構(gòu)的意義和與它有關(guān)的幾個(gè)函數(shù)。
1.結(jié)構(gòu)定義typedef struet Button Def{
short X1;
short Y1;
short X2;
short Y1;
} button
(X1,Y1)和(X2,Y2)分別為按鈕左上角和右下角的位置坐標(biāo),用于確定按鈕的位置和大小。
為了程序需要,須定義幾個(gè)常用的量。
#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.函數(shù)定義
(1)void Button Define(button *bt,Short X1,Short Y,short X2,short Y2)該函數(shù)用于定義一個(gè)名為bt的按鈕的大小和位置,其左上角及右下角坐標(biāo)為(X1,Y1),(X2,Y2)。
START-X=X1;
START-Y=Y1;
END-X=X2;
END-Y=Y2;
(2)Void Release Button(button *bt)
該函數(shù)顯示按鈕彈起時(shí)的狀態(tài)。
(3)Put Down Button(button *bt)該函數(shù)顯示按鈕按下時(shí)的狀態(tài)。
下面列出了以上函數(shù)用于定義按鈕,顯示按鈕彈起,按下?tīng)顟B(tài)的程序,這個(gè)程序在屏幕上顯示7個(gè)按鈕,按下1~7個(gè)數(shù)字后就彈起某個(gè)按鈕,非常方便,需要彈起某個(gè)數(shù)字就按哪個(gè)數(shù)字,特別需要指出的是,當(dāng)Gsap大一些時(shí),每個(gè)按鈕,就如同鍵盤(pán)上的鍵一樣,立體感很強(qiáng),有興趣的讀者可以實(shí)踐操作一下,并把這種簡(jiǎn)明易懂的技術(shù)用之于工作,以提高工作效率。
button.c
#include<graphics.h>
#include<conio.h>
#include<alloc.h>
#include<stdio.h>
#include<process.h>
#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.gmod
[1] [2] [3]
【用C語(yǔ)言實(shí)現(xiàn)按鈕新技術(shù)】相關(guān)文章:
用C語(yǔ)言實(shí)現(xiàn)火箭的升空05-01
c語(yǔ)言心得04-24
按鈕04-30
C語(yǔ)言課程教案04-24
C語(yǔ)言小游戲05-01
C語(yǔ)言的論文致謝04-29
C語(yǔ)言的實(shí)踐實(shí)習(xí)心得04-28
c語(yǔ)言讀書(shū)筆記03-23
C語(yǔ)言實(shí)習(xí)總結(jié)01-19
C語(yǔ)言實(shí)習(xí)心得01-01