电子相册实现滑动解锁、JPG和BMP图片显示  用到的技巧有文件/系统IO函数,双向循环链表,目录检索和BMP,JPG图片显示的函数 
 
 
 
源码在压缩包里 
 
 
 
int main(int argc, char *argv[]) 
 
{         
 
        //初始化设备 
 
        Lcd_Init(); 
 
        //显示锁屏界面 
 
        Show_bmp(0, 0,"lock.bmp"); 
 
        usleep(1000); 
 
        //显示锁屏** 
 
        Show_bmp(100, 370,"**.bmp"); 
 
         
 
        while(1) 
 
        { 
 
                //获取坐标 
 
                get_ts_xy(); 
 
                 
 
                Show_bmp(100,370,"frame.bmp"); 
 
                usleep(10); 
 
                //触摸得到x轴变化的坐标,锁屏界面和**的图标交替刷新,达到**移动的效果 
 
                Show_bmp(a, 370,"**.bmp"); 
 
 
 
                //判断滑块到达锁屏框最后,松手则跳出循环 
 
                if(ts_x2 >= 420&&ts_y2>370&&ts_y2<450) 
 
                { 
 
                        break; 
 
                } 
 
                 
 
        } 
 
        //在锁屏框最后显示解锁成功的** 
 
        Show_bmp(420, 370,&quot;unlock.bmp&quot;); 
 
        usleep(500000);   //延时0.5秒 
 
        printf(&quot;success!!\n&quot;); 
 
        /*****************************************************************/ 
 
        d_list = Create_List(); 
 
        D_Node *p=NULL; 
 
         
 
        //播放音乐 
 
        system(&quot;madplay faded.mp3 &&quot;); 
 
         
 
        //检索指定目录里的所有bmp图片,并添加进链表 
 
        search_dir(&quot;./pic&quot;); 
 
         
 
        p=d_list->next; 
 
        printf(&quot;It's never too late to learn!\n&quot;); 
 
         
 
        int flag1; 
 
        while(1) 
 
        { 
 
                //显示解锁后的主页面 
 
                Show_bmp(0, 0, &quot;main.bmp&quot;); 
 
                get_x1y1(); 
 
                 
 
                //循环显示照片 
 
                if(x_2>55&&x_2<315&&y_2>390&&y_2<460) 
 
                { 
 
                        flag1 = 0; 
 
                        while(1) 
 
                        { 
 
                                //检测bmp图片并下拉显示bmp图片 
 
                                if( strcmp(&quot;.bmp&quot;, p->picname + strlen(p->picname)-4) == 0&&flag1 == 0) 
 
                                { 
 
                                        Show_4_bmp(p->picname); 
 
                                        show_buf1(); 
 
                                        printf(&quot;This is bmp\n&quot;); 
 
                                        flag1 = 1; 
 
                                } 
 
                                if( strcmp(&quot;.bmp&quot;, p->picname + strlen(p->picname)-4) == 0) 
 
                                { 
 
                                        p=p->next; 
 
                                        usleep(1000000); 
 
                                } 
 
                                //跳出循环 
 
                                if(strcmp(&quot;00.bmp&quot;, p->picname+strlen(p->picname)-6) == 0) 
 
                                {                 
 
                                        break; 
 
                                }  
 
                                 
 
                                //检测bmp图片并上拉显示bmp图片 
 
                                if( strcmp(&quot;.bmp&quot;, p->picname + strlen(p->picname)-4) == 0&&flag1 == 1) 
 
                                { 
 
                                        Show_4_bmp(p->picname); 
 
                                        show_buf2(); 
 
                                        printf(&quot;This is bmp\n&quot;); 
 
                                        flag1 = 0; 
 
                                } 
 
                                //检测jpg图片并显示jpg图片 
 
                                if( strcmp(&quot;.jpg&quot;, p->picname + strlen(p->picname)-4) == 0) 
 
                                { 
 
                                        show_jpg(p->picname); 
 
                                        printf(&quot;This is jpg\n&quot;); 
 
                                } 
 
                                usleep(1000000);        //延时1秒 
 
                                p=p->next; 
 
                                 
 
                                //跳出循环 
 
                                if(strcmp(&quot;00.bmp&quot;, p->picname+strlen(p->picname)-6) == 0) 
 
                                {                 
 
                                        break; 
 
                                }  
 
                        } 
 
                } 
 
                //滑动显示照片 
 
                if(x_2>490&&x_2<750&&y_2>390&&y_2<460) 
 
                {         
 
                        flag1 = 0;         
 
                        p=d_list->next; 
 
                        if( strcmp(&quot;.bmp&quot;, p->picname + strlen(p->picname)-4) == 0) 
 
                        { 
 
                                Show_4_bmp(p->picname); 
 
                                show_buf1(); 
 
                                printf(&quot;This is bmp\n&quot;); 
 
                        } 
 
                        if( strcmp(&quot;.jpg&quot;, p->picname + strlen(p->picname)-4) == 0) 
 
                        { 
 
                                show_jpg(p->picname); 
 
                                printf(&quot;This is jpg\n&quot;); 
 
                        } 
 
                        while(1) 
 
                        {         
 
                                get_x1y1(); 
 
                                get_flag();         
 
                                //向右滑 
 
                                if(i == 1) 
 
                                { 
 
                                        p = p->next; 
 
                                        //向右慢慢显示bmp照片 
 
                                        if( strcmp(&quot;.bmp&quot;, p->picname + strlen(p->picname)-4) == 0) 
 
                                        { 
 
                                                Show_4_bmp(p->picname); 
 
                                                show_buf5(); 
 
                                                printf(&quot;This is bmp\n&quot;); 
 
                                        } 
 
                                        //显示jpg图片 
 
                                        if( strcmp(&quot;.jpg&quot;, p->picname + strlen(p->picname)-4) == 0) 
 
                                        { 
 
                                                show_jpg(p->picname); 
 
                                                printf(&quot;This is jpg\n&quot;); 
 
                                        } 
 
                                        if(p == d_list) 
 
                                        { 
 
                                                p = p->next; 
 
                                        } 
 
 
 
                                } 
 
                                //向左滑 
 
                                if(i == 2) 
 
                                { 
 
                                        p = p->prev; 
 
                                        //向左慢慢显示bmp照片 
 
                                        if( strcmp(&quot;.bmp&quot;, p->picname + strlen(p->picname)-4) == 0) 
 
                                        { 
 
                                                Show_4_bmp(p->picname); 
 
                                                show_buf6(); 
 
                                                printf(&quot;This is bmp\n&quot;); 
 
                                        } 
 
                                        if( strcmp(&quot;.jpg&quot;, p->picname + strlen(p->picname)-4) == 0) 
 
                                        { 
 
                                                show_jpg(p->picname); 
 
                                                printf(&quot;This is jpg\n&quot;); 
 
                                        }                                         
 
                                        if(p == d_list) 
 
                                        { 
 
                                                p = p->prev; 
 
                                        }                                         
 
                                                                         
 
                                } 
 
                                //向上滑 
 
                                if(i == 3) 
 
                                { 
 
                                        break; 
 
                                } 
 
                                //向下滑 
 
                                if(i == 4) 
 
                                { 
 
                                        p=d_list->next; 
 
                                        while(1) 
 
                                        { 
 
                                                //横向百叶窗显示bmp图片 
 
                                                if( strcmp(&quot;.bmp&quot;, p->picname + strlen(p->picname)-4) == 0&&flag1 == 0) 
 
                                                { 
 
                                                        Show_4_bmp(p->picname); 
 
                                                        show_buf3(); 
 
                                                        printf(&quot;This is bmp\n&quot;); 
 
                                                        flag1 = 1; 
 
                                                } 
 
                                                if(strcmp(&quot;.bmp&quot;, p->picname + strlen(p->picname)-4) == 0) 
 
                                                { 
 
                                                        p = p->next; 
 
                                                        usleep(1000000);        //延时1秒 
 
                                                } 
 
 
 
                                                if(strcmp(&quot;00.bmp&quot;, p->picname+strlen(p->picname)-6) == 0) 
 
                                                {                 
 
                                                        break; 
 
                                                } 
 
                                                //纵向百叶窗显示bmp图片 
 
                                                if( strcmp(&quot;.bmp&quot;, p->picname + strlen(p->picname)-4) == 0&&flag1 == 1) 
 
                                                { 
 
                                                        Show_4_bmp(p->picname); 
 
                                                        show_buf4(); 
 
                                                        printf(&quot;This is bmp\n&quot;); 
 
                                                        flag1 = 0; 
 
                                                } 
 
                                                //显示jpg图片 
 
                                                if( strcmp(&quot;.jpg&quot;, p->picname + strlen(p->picname)-4) == 0) 
 
                                                { 
 
                                                        show_jpg(p->picname); 
 
                                                        printf(&quot;This is jpg\n&quot;); 
 
                                                } 
 
                                                usleep(1000000);        //延时1秒 
 
                                                p=p->next; 
 
 
 
                 
 
                                                if(strcmp(&quot;00.bmp&quot;, p->picname+strlen(p->picname)-6) == 0) 
 
                                                {                 
 
                                                        break; 
 
                                                } 
 
                                        } 
 
                                } 
 
                        } 
 
 
 
                } 
 
                if(i == 3) 
 
                { 
 
                        break; 
 
                } 
 
/*                 //判断向上划退出 
 
                if(((x_2-x_1)<(y_1-y_2))&&(x_2>x_1)&&(y_2<y_1))                //第一象限 
 
                { 
 
                        printf(&quot;sa yo la la!\n&quot;); 
 
                        break; 
 
                }                 
 
                if(((x_1-x_2)<(y_1-y_2))&&(x_2<x_1)&&(y_2<y_1))                //第二象限 
 
                { 
 
                        printf(&quot;sa yo la la!\n&quot;); 
 
                        break; 
 
                }*/ 
 
        }          
 
         
 
        //音乐停止 
 
        printf(&quot;stop!\n&quot;); 
 
        system(&quot;killall -9 madplay&quot;); 
 
         
 
        //居中显示 
 
        show_middle_bmp(&quot;05.bmp&quot;); 
 
        usleep(300000); 
 
        //小惊喜 
 
        printf(&quot;suprise!!!!!!!!!!!!!\n&quot;); 
 
        p=d_list->prev; 
 
        flag1 = 0; 
 
        while(1) 
 
        {                 
 
                //显示bmp图片 
 
                if( strcmp(&quot;.bmp&quot;, p->picname + strlen(p->picname)-4) == 0) 
 
                { 
 
                        Show_4_bmp(p->picname); 
 
                        show_buf0(); 
 
                        printf(&quot;This is bmp\n&quot;); 
 
                } 
 
                usleep(30000); 
 
                p = p->prev; 
 
                if(p == d_list) 
 
                { 
 
                        flag1++; 
 
                        p=d_list->prev; 
 
                } 
 
                if(flag1 == 2) 
 
                { 
 
                        break; 
 
                } 
 
        } 
 
         
 
        show_middle_bmp(&quot;bye.bmp&quot;); 
 
         
 
        //关闭设备 
 
        Lcd_Uninit(); |   
     
  
 |