📄 picture.c
字号:
#include "COMM.h"
//图片浏览模式控制
//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;
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)key=Touch_Key_Pro(2);//得到了按键值
if(key)
{
if(enout&&key==CLICK_POINT&&Is_In_Area(200,300,239,319))goto BROS;//退出此张图片
enout=0;
if(key==MOVE_UP||key==MOVE_LEFT)//显示前一副图片
{
if(index>1)index--;
else index=pic_cnt;//到最后一副(循环)
break;
}else if(key==MOVE_DOWN||key==MOVE_RIGHT)
{
index++;
if(index>pic_cnt)index=1;//显示第一副,循环
break;
}else if(key==CLICK_POINT) //单次按下,弹出退出选择项
{
enout=1;//使能退出
POINT_COLOR=RED;
Show_Str(203,300,"返回",0x01); //叠加模式,非自动换行
POINT_COLOR=BLUE;
}
key=0;//清除键值
Pen_Point.Key_Sta=Key_Up;//释放显示期间的触发
}
delay_ms(1);
tcnt++;
if(tcnt>=dtime)//延迟时间到了
{
tcnt=0;
if((PIC_View_Status>>6))//非手动模式
{
PIC_Mode_Control(&index,pic_cnt);//模式控制
break;//播放下一幅
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -