?? picture.c
字號:
#include "COMM.h"
//圖片瀏覽部分代碼,包括模式控制等
//正點原子@SCUT
//V1.1
//圖片瀏覽模式控制
//index:當前編號/返回值
//total:總文件數
void PIC_Mode_Control(u16 *index,u16 total)
{
u8 temp;
u16 nextindex;
nextindex=*index;
temp=PIC_View_Status>>6;//得到模式
if(temp==1)//順序播放
{
nextindex++;
if(nextindex>total)nextindex=1;//范圍控制
}else //隨機播放
{
srand(RTC->CNTL);//得到種子
while(1)
{
nextindex=rand();//得到下一個值
if(nextindex>0&&nextindex<=total)break;//得到了可用的隨機數
}
}
*index=nextindex;
}
//圖片瀏覽器
//支持FAT32/16文件系統的瀏覽.
//check:09/04/18
void Pic_Viewer(void)
{
u8 key;
FileInfoStruct *FileInfo;
u16 pic_cnt=0;//當前目錄下圖片文件的個數
u16 index=0; //當前選擇的文件編號
u8 enout=0;
u8 keycnt=0;
u16 dtime=0;
u16 tcnt=0;
//從根目錄開始瀏覽
if(FAT32_Enable)Cur_Dir_Cluster=FirstDirClust;//根目錄簇號
else Cur_Dir_Cluster=0;
Fat_Dir_Cluster=Cur_Dir_Cluster;//父目錄就是當前目錄
PIC_View_Status=FM24C16_ReadOneByte(486);//讀取圖片瀏覽播放模式信息
dtime=PIC_Time_Table[PIC_View_Status&0x07];//得到延遲時間
dtime*=1000;//擴大1000倍 ms級別 1000ms
while(1)
{
BROS:
Load_Gui_Bro("選擇");//顯示GUI界面
POINT_COLOR=RED;
Show_Str(88,2,"圖片瀏覽",0x01);//疊加模式,非自動換行
index=File_Browse(T_JPG|T_JPG|T_BMP);//瀏覽文件夾
if(!index)return;//結束瀏覽,退出此功能!!!!!
pic_cnt=0;
Get_File_Info(Cur_Dir_Cluster,FileInfo,T_JPG|T_JPG|T_BMP,&pic_cnt);//獲取當前文件夾下面的目標文件個數
Pen_Point.Key_Sta=Key_Up; //釋放顯示期間的觸發
FileInfo=&F_Info[0];//開辟暫存空間.
while(1)
{
Get_File_Info(Cur_Dir_Cluster,FileInfo,T_JPG|T_JPG|T_BMP,&index);//得到這張圖片的信息
TFT_CLEAR(WHITE);//清屏,加載下一幅圖片的時候,一定清屏
AI_LoadPicFile(FileInfo,0,0,240,320);//顯示圖片
Pen_Point.Key_Sta=Key_Up;//釋放顯示期間的觸發
key=0;enout=0;
tcnt=0;
while(1)
{
if((Pen_Point.Key_Sta==Key_Down||NPEN)&&Pen_Point.Key_LSta)key=Touch_To_Num(7);//擴展按鍵掃描
if(PEN)//按鍵松開了,狀態改變(狀態機)
{
Pen_Point.Key_LSta=1;
Pen_Point.Key_Sta=Key_Up;
keycnt=0;
}
if(enout&&Is_In_Area(200,300,239,319))goto BROS;//返回瀏覽模式
if(key)
{
Pen_Point.Key_LSta=Key_Up;//釋放顯示期間的觸發
switch(key)
{
case KEY_PREV:
if(index>1)index--;
else index=pic_cnt;//到最后一副(循環)
break;
case KEY_NEXT:
index++;
if(index>pic_cnt)index=1;//顯示第一副,循環
break;
case KEY_FUNC://短按暫停,長按退出
Pen_Point.Key_LSta=Key_Down;//允許下次進入
keycnt++;
tcnt=0;//清空時間計數器
if(keycnt>=20)
{
enout=1;//使能退出
POINT_COLOR=RED;
TFT_Fill(0,298,239,319,0X81BF);//填充底部顏色
Show_Str(203,300,"返回",0x01); //疊加模式,非自動換行
}
}
if(key!=KEY_FUNC)break;//上下翻頁
key=0;//清除鍵值
}
delay_ms(1);
if(tcnt>=dtime)//延遲時間到了
{
tcnt=0;
if((PIC_View_Status>>6))//非手動模式
{
PIC_Mode_Control(&index,pic_cnt);//模式控制
break;//播放下一幅
}
}
tcnt++;//時間累加
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -