?? gui.c
字號(hào):
#include "COMM.h"
DWORD Cur_Dir_Cluster;//當(dāng)前目錄簇號(hào)
DWORD Fat_Dir_Cluster;//父目錄簇號(hào) 在FAT文件夾里面CopyDirentruyItem函數(shù)中修改!
//系統(tǒng)主菜單
const u8 *Menu[9]=
{
"音樂",
"圖片",
"游戲",
"鬧鐘",
"時(shí)間",
"設(shè)置",
"電子書",
"收音機(jī)",
"七彩燈"
};
//u8 *menux[8]={"時(shí)間設(shè)置","觸摸屏校準(zhǔn)","圖片瀏覽設(shè)置","FUCK YOU ","SELECT","測(cè)試","其他","計(jì)算機(jī)"};
//功能選擇調(diào)度函數(shù)
//list :功能條目指針
//title :標(biāo)題
//func :選擇/確定/。。。
//len :功能條目的個(gè)數(shù)(1~8)
//sel :開始選中的條目(0~7)
//返回值:0~7,選中的條目;8,沒有選擇任何條目。
u8 Load_Fun_Sel(const u8 * *list,const u8 *title,u8 *func,u8 len,u8 sel)
{
u8 t,key;
TFT_CLEAR(WHITE);//清屏
TFT_Fill(0,0,239,20,Bro_TOP); //填充頂部顏色
TFT_Fill(0,21,239,41,Bro_MID); //填充中部部顏色
TFT_Fill(0,298,239,319,Bro_BTM);//填充底部顏色
//顯示標(biāo)題
POINT_COLOR=RED;
Show_Str_Mid(0,2,(u8*)title,0x01,240); //疊加模式,非自動(dòng)換行
POINT_COLOR=BLUE;
Show_Str(0,23,"請(qǐng)選擇:",0x01); //疊加模式,非自動(dòng)換行
//加載條目信息
for(t=0;t<len;t++)
{
if(t==sel)TFT_Fill(0,42+sel*32,239,42+(sel+1)*32,BROWN);//對(duì)選中的條目,填充棕色
Show_Str(0,50+t*32,(u8*)list[t],0x01); //疊加模式,非自動(dòng)換行
}
//加載 確定 返回 按鈕
POINT_COLOR=RED;
Show_Str(5,300,func,0x01); //疊加模式,非自動(dòng)換行
Show_Str(203,300,"返回",0x01); //疊加模式,非自動(dòng)換行
key=0;
Pen_Point.Key_Sta=Key_Up;//釋放顯示期間的觸發(fā)
while(1)//等待按鍵
{
if((Pen_Point.Key_Sta==Key_Down||NPEN)&&Pen_Point.Key_LSta)key=Touch_To_Num(4);//得到按鍵值
if(PEN)//按鍵松開了,狀態(tài)改變(狀態(tài)機(jī))
{
Pen_Point.Key_LSta=1;
Pen_Point.Key_Sta=Key_Up;
}
if(key)//有按鍵按下
{
Pen_Point.Key_LSta=0;
switch(key)
{
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9://確認(rèn)鍵按下
key-=1;
if(sel!=key&&key<len)//選中一個(gè)
{
POINT_COLOR=BLUE;//畫筆顏色選擇
TFT_Fill(0,42+sel*32,239,42+(sel+1)*32,WHITE);//清空上次選擇的
Show_Str(0,50+sel*32,(u8*)list[sel],0x01);//重新顯示上次的名字
sel=key;//選擇這次選擇的
TFT_Fill(0,42+sel*32,239,42+(sel+1)*32,BROWN);//填充底色
Show_Str(0,50+sel*32,(u8*)list[sel],0x01);//顯示名字
}else if(sel==key||key==8)//選擇按鈕,或者雙擊
{
return sel;//返回選擇的條目號(hào)
}
break;
case 10:return 8;//選擇了"返回"按鈕,返回一個(gè)不可能值
}
key=0;//取消按鍵值
}
delay_ms(1);
}
}
//設(shè)置音效的界面
//kind:0:VS1003
//kind:1:PT2314
void Load_Gui_Set_EQ(u8 kind)
{
TFT_CLEAR(WHITE);//清屏
//標(biāo)題欄
TFT_Fill(0,0,239,20,MP3COLOR1); //填充頂部顏色
POINT_COLOR=GRED;
BACK_COLOR=MP3COLOR1;
Show_Str_Mid(0,3,"音效管理",0x01,240);
TFT_Fill(0,21,239,41,Bro_MID); //填充中部部顏色
TFT_Fill(0,298,239,319,Bro_BTM);//填充底部顏色
TFT_Fill(0,74,239,106,LGRAY); //填充背色
TFT_Fill(0,138,239,170,LGRAY);//填充背色
POINT_COLOR=BLUE;
if(kind) //設(shè)置PT2314
{
TFT_Fill(0,202,239,234,LGRAY);//填充背色
Show_Str(0,50,"音量:",0x01); //疊加模式,非自動(dòng)換行
Show_Str(0,82,"高音:",0x01); //疊加模式,非自動(dòng)換行
Show_Str(0,114,"低音:",0x01); //疊加模式,非自動(dòng)換行
Show_Str(0,146,"左聲道:",0x01); //疊加模式,非自動(dòng)換行
Show_Str(0,178,"右聲道:",0x01); //疊加模式,非自動(dòng)換行
Show_Str(0,210,"超重音:",0x01); //疊加模式,非自動(dòng)換行
}else//設(shè)置VS1003
{
Show_Str(0,50,"高音:",0x01); //疊加模式,非自動(dòng)換行
Show_Str(0,82,"高頻:",0x01); //疊加模式,非自動(dòng)換行
Show_Str(0,114,"低音:",0x01); //疊加模式,非自動(dòng)換行
Show_Str(0,146,"低頻:",0x01); //疊加模式,非自動(dòng)換行
Show_Str(0,178,"音量:",0x01); //疊加模式,非自動(dòng)換行
}
//音量
POINT_COLOR=BROWN;
BACK_COLOR=WHITE;
TFT_ShowButton(100,46,1);//<
TFT_ShowButton(172,46,0);//>
//低音
TFT_ShowButton(100,110,1);//<
TFT_ShowButton(172,110,0);//>
//右聲道
TFT_ShowButton(100,174,1);//<
TFT_ShowButton(172,174,0);//>
//高音
BACK_COLOR=LGRAY;
TFT_ShowButton(100,78,1);//<
TFT_ShowButton(172,78,0);//>
//左聲道
TFT_ShowButton(100,142,1);//<
TFT_ShowButton(172,142,0);//>
//超重音
if(kind)
{
TFT_ShowButton(100,208,1);//<
TFT_ShowButton(172,208,0);//>
POINT_COLOR=RED;
Show_Str(5,300,"選項(xiàng)",0x01); //疊加模式,非自動(dòng)換行
}else
{
POINT_COLOR=RED;
Show_Str(5,300,"確定",0x01); //疊加模式,非自動(dòng)換行
}
//加載選項(xiàng),返回按鈕
Show_Str(203,300,"返回",0x01); //疊加模式,非自動(dòng)換行
}
//裝載鍵盤
//load:1,加載。0,清除
void Load_KeyBoard(u8 load)
{
u8 t;
BACK_COLOR=WHITE;
if(load)POINT_COLOR=BLACK;
else POINT_COLOR=WHITE;
for(t=0;t<11;t++) //先加載數(shù)據(jù)
{
if(t<10)TFT_ShowChar(18+18*t,269,'0'+t,16,0x01);
else TFT_ShowButton(198,265,21);//加載"<-"
}
if(load)POINT_COLOR=GRAY;//灰色邊框
else POINT_COLOR=WHITE;
for(t=0;t<11;t++) //加載外框
{
if(t==10)TFT_DrawRectangle(194,269,226,285); //32*16方框
else TFT_DrawRectangle(14+18*t,269,30+18*t,285);//16*16方框
}
}
//加載鬧鐘設(shè)置時(shí)的界面
//不對(duì)任何參數(shù)賦值修改
void Load_Gui_Set_Alarm(void)
{
u8 t;
u8 *weekeng[7]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
TFT_CLEAR(WHITE);//清屏
TFT_Fill(0,0,239,20,Bro_TOP); //填充頂部顏色
TFT_Fill(0,21,239,41,Bro_MID); //填充中部部顏色
TFT_Fill(0,298,239,319,Bro_BTM);//填充底部顏色
TFT_Fill(0,42,239,74,LGRAY); //填充開關(guān)背色
TFT_Fill(0,106,239,170,LGRAY);//填充響鈴背色
TFT_Fill(0,202,239,234,LGRAY);//填充鈴聲背色
//顯示標(biāo)題
POINT_COLOR=RED;
Show_Str_Mid(0,3,"編輯鬧鐘",0x01,240); //疊加模式,非自動(dòng)換行
POINT_COLOR=BLUE;
Show_Str(0,50,"鬧鐘開關(guān):",0x01); //疊加模式,非自動(dòng)換行
Show_Str(0,82,"鬧鈴時(shí)間:",0x01); //疊加模式,非自動(dòng)換行
Show_Str(0,114,"響鈴方式:",0x01); //疊加模式,非自動(dòng)換行
//加載條目信息
POINT_COLOR=BLACK;
for(t=0;t<7;t++)
{
Show_Str(21+29*t,146,weekeng[t],0x01); //疊加模式,非自動(dòng)換行
}
POINT_COLOR=BLUE;
Show_Str(0,178,"鈴聲設(shè)置:",0x01); //疊加模式,非自動(dòng)換行
POINT_COLOR=BROWN;
//鬧鐘開關(guān)
BACK_COLOR=LGRAY;
TFT_ShowButton(85,46,1);//<
TFT_ShowButton(210,46,0);//>
//響鈴方式
TFT_ShowButton(85,110,1);//<
TFT_ShowButton(210,110,0);//>
//鈴聲設(shè)置
BACK_COLOR=WHITE;
TFT_ShowButton(85,174,1);//<
TFT_ShowButton(210,174,0);//>
POINT_COLOR=RED;
Show_Str(5,300,"確定",0x01); //疊加模式,非自動(dòng)換行
Show_Str(203,300,"返回",0x01); //疊加模式,非自動(dòng)換行
}
////////////////////////////////////////////////////////////////////////
//畫拖按鈕,可以拖動(dòng)
//keypos:0~150
void Draw_Bar_Bottom(u8 x,u8 y,u8 keypos,u8 lastpos)
{
u16 realpos=0;
if(keypos==0xff)
{
TFT_Fill(x,y,x+60,200+y,GRAY); //填充外界顏色
TFT_Fill(x+25,y+10,x+35,190+y,LGRAY); //填充頂部顏色
}else
{
realpos=180-(u16)lastpos+(u16)y;//
TFT_Fill(x+15,realpos,x+45,realpos+10,GRAY);//清空進(jìn)度條,填充白色
TFT_Fill(x+25,realpos,x+35,realpos+10,LGRAY); //填充頂部顏色
realpos=180-(u16)keypos+(u16)y; //
TFT_Fill(x+15,realpos,x+45,realpos+10,BROWN);//清空進(jìn)度條,填充白色
}
}
//紅綠藍(lán)按鈕所在位置處理
//RGB:0,紅燈;1,綠燈;3,藍(lán)燈
void RGB_Bottom(u8 RGB,u8 pos)
{
static u8 lastred=0;
static u8 lastgreen=0;
static u8 lastblue=0;
if(pos>170)return;//非法數(shù)據(jù),直接返回
switch(RGB)
{
case 0:
Draw_Bar_Bottom(10,93,pos,lastred);
lastred=pos;
break;
case 1:
Draw_Bar_Bottom(90,93,pos,lastgreen);
lastgreen=pos;
break;
case 2:
Draw_Bar_Bottom(170,93,pos,lastblue);
lastblue=pos;
break;
}
}
//加載彩燈控制的界面
//不對(duì)任何參數(shù)賦值修改
void Load_Gui_RGBLED(void)
{
TFT_CLEAR(WHITE);//清屏
BACK_COLOR=MP3COLOR1;
POINT_COLOR=GRED;
TFT_Fill(0,0,239,19,MP3COLOR1); //填充頂部顏色
TFT_Fill(0,298,239,319,Bro_BTM);//填充底部顏色
Show_Str_Mid(0,2,"彩燈控制",0x01,240); //疊加模式,非自動(dòng)換行
TFT_Fill(0,40,239,72,LGRAY);//填充背色
TFT_Fill(0,40,239,72,LGRAY);//填充背色
POINT_COLOR=BROWN;
TFT_DrawRectangle(19,47,53,65);
TFT_DrawRectangle(187,47,221,65);
BACK_COLOR=WHITE;
TFT_Fill(0,72,239,73,BROWN);//填充響鈴背色
POINT_COLOR=RED;
Show_Str(24,75,"紅色",0x01); //疊加模式,非自動(dòng)換行
POINT_COLOR=GREEN;
Show_Str(104,75,"綠色",0x01); //疊加模式,非自動(dòng)換行
POINT_COLOR=BLUE;
Show_Str(184,75,"藍(lán)色",0x01); //疊加模式,非自動(dòng)換行
//顯示標(biāo)題
//加載條目信息
POINT_COLOR=RED;
BACK_COLOR=Bro_BTM;
Show_Str(5,300,"選項(xiàng)",0x01); //疊加模式,非自動(dòng)換行
Show_Str(203,300,"返回",0x01); //疊加模式,非自動(dòng)換行
Draw_Bar_Bottom(10,93,0XFF,0);
Draw_Bar_Bottom(90,93,0XFF,0);
Draw_Bar_Bottom(170,93,0XFF,0);
}
////////////////////////////////////////////////////////////////////////
//選擇菜單
void Select_Menu(u8 M_Type,u8 Cnt,u8 En)
{
u8 tx;
u16 ty;
ty=10;
if(M_Type==0)//主菜單
{
tx=80*(Cnt%3)+10;//10,90,170
if(Cnt>5)ty=216;
else if(Cnt>2)ty=113;
if(En)//選中當(dāng)前的菜單
{
POINT_COLOR=WHITE;//白色字體
BACK_COLOR=BLUE; //藍(lán)色背景
}else
{
POINT_COLOR=BLACK;//黑色字體
BACK_COLOR=WHITE; //白色背景
}
if(Cnt<6)Show_Str(tx+13,ty+74,(u8*)Menu[Cnt],0);
else Show_Str(tx+5,ty+74,(u8*)Menu[Cnt],0);
}
}
//裝載系統(tǒng)ICO文件
void Load_Sys_ICO(void)
{
u8 t,tx;
u16 ty;
FileInfoStruct temp;
POINT_COLOR=RED;//黑色字體
TFT_CLEAR(WHITE);//清屏
temp.F_Type=T_BMP;//文件屬性設(shè)置
tx=10;ty=10;
for(t=0;t<9;t++)
{
temp.F_StartCluster=sys_ico[t];
tx=80*(t%3)+10;//10,90,170
AI_LoadPicFile(&temp,tx,ty,tx+59,ty+60);
Select_Menu(0,t,0);//加載字體
if(t>=5)ty=216;
else if(t>=2)ty=113;
}
}
//加載瀏覽界面
//設(shè)置界面
//str:"選擇/確定"
void Load_Gui_Bro(u8 * str)
{
TFT_CLEAR(WHITE);//清屏
TFT_Fill(0,0,239,20,0X038A); //填充頂部顏色
TFT_Fill(0,21,239,41,0XEFC0); //填充中部部顏色
TFT_Fill(0,298,239,319,0X81BF);//填充底部顏色
POINT_COLOR=BLUE;
Show_Str(0,23,"請(qǐng)選擇:",0x01); //疊加模式,非自動(dòng)換行
POINT_COLOR=RED;
Show_Str(5,300,str,0x01); //疊加模式,非自動(dòng)換行
Show_Str(203,300,"返回",0x01); //疊加模式,非自動(dòng)換行
}
//加載MP3播放界面
//sysfun變量。0~9bit用來標(biāo)記不同狀態(tài)
void Load_Gui_Mp3(u16 funmark)
{
u16 t;
TFT_Fill(0,0,239,23,MP3COLOR1); //填充頂部顏色
POINT_COLOR=GRED;
BACK_COLOR=MP3COLOR1;
Show_Str_Mid(0,3,"音樂播放機(jī)",0x01,240);
TFT_Fill(0,24,239,41,MP3COLOR2); //填充頂部顏色
TFT_Fill(0,42,239,67,MP3COLOR3); //填充頂部顏色
BACK_COLOR=MP3COLOR3;
POINT_COLOR=GREEN;
for(t=0;t<4;t++)TFT_ShowButton(2+60*t,43,5+t);//加載 喇叭,高音低音和dsp
TFT_Fill(0,68,239,101,MP3COLOR4); //填充頂部顏色
BACK_COLOR=MP3COLOR4;
POINT_COLOR=GREEN;
t=funmark&0x03;
//顯示循環(huán)模式
BACK_COLOR=MP3COLOR4;
POINT_COLOR=GREEN;
TFT_ShowButton(214,72,t+2);//加載循環(huán)模式
if((funmark>>8)&0x01)TFT_ShowButton(2,72,16); //加載有歌詞圖標(biāo)
else TFT_ShowButton(2,72,17); //加載無歌詞圖標(biāo)
TFT_ProBar(0);//畫空進(jìn)度,180*10大小
TFT_Fill(0,102,239,119,MP3COLOR5); //填充頂部顏色
t=(funmark>>7)&0x01;//是否顯示超重低音
BACK_COLOR=MP3COLOR5;
POINT_COLOR=GRED;
if(t)Show_Str_Mid(0,102,"Supper Bass",0,240);
else Show_Str_Mid(0,102," ",0,240);//清除顯
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -