⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menuicon.c

📁 ARM_CORTEX-M3应用实例开发详解光盘
💻 C
字号:
#include "menu.h"
#include <stdio.h>

#define ICON_XOFF 24 //+ BarXOffset
#define ICON_YOFF TITLEH + VINTERVAL //BarYOffset

#define ICON_SIZE 64

GUI_RECT grTitle = {0, 0, SCREENX-1, TITLEH-1};

unsigned int LCD_L0_GetPixelIndex(int x, int y);

void DrawIcons(int i)
{
    int x, y;

    x = ICON_XOFF + i % 3 * ICON_SIZE;
    y = ICON_YOFF + i / 3 * ICON_SIZE;

    
    GUI_DrawCircle(x+ICON_SIZE/2, y+ICON_SIZE/2, ICON_SIZE/2);
    GUI_DispDecAt(i, x+ICON_SIZE/2-10, y+ICON_SIZE/2-10, 2);
}
void SleIcon(int i)
{

  //  int m, n;
    int x, y;        

  //  unsigned int t, r, g, b;
    int Xpos, Ypos;

    Xpos = ICON_XOFF + i % 3 * ICON_SIZE;
    Ypos = ICON_YOFF + i / 3 * ICON_SIZE;

    x = Xpos, y = Ypos;

    MenuHigLight(x, y, ICON_SIZE, ICON_SIZE, 1);
/*
    for (m=0; m<ICON_SIZE; m++)
        for (n=0; n<ICON_SIZE; n++) {
             t = LCD_L0_GetPixelIndex(x+n, y+m);
             r = (t & 0x1f);
             g = (t >> 5) & 0x3f;
             b = (t >> 11) & 0x1f;

             r += (0x1f - r) >> 2;
             g += (0x3f - g) >> 2;
             b += (0x1f - b) >> 2;
        
             t = r | (g << 5) | (b << 11);
             LCD_L0_SetPixelIndex(x+n, y+m, t);
        }
 *//*
    GUI_DrawHLine(Ypos, Xpos, Xpos+20);
    GUI_DrawHLine(Ypos, Xpos + ICON_SIZE - 20, Xpos + ICON_SIZE);

    GUI_DrawHLine(Ypos + ICON_SIZE, Xpos, Xpos+20);
    GUI_DrawHLine(Ypos + ICON_SIZE, Xpos + ICON_SIZE - 20, Xpos + ICON_SIZE);

    GUI_DrawLine(Xpos, Ypos, Xpos, Ypos+20);
    GUI_DrawLine(Xpos + ICON_SIZE, Ypos, Xpos + ICON_SIZE, Ypos+20);
    GUI_DrawLine(Xpos, Ypos + ICON_SIZE -20, Xpos, Ypos + ICON_SIZE);
    GUI_DrawLine(Xpos + ICON_SIZE, Ypos + ICON_SIZE - 20, Xpos + ICON_SIZE, Ypos + ICON_SIZE);
*/
}

/*
*****************************************************************************
* DispIcoMenuInit - 图标层菜单界面
* DESCRIPTION: -
* 共有5个函数
 DispIcoMenuInit    DispIcoMenuUp   DispIcoMenuDown
 DispIcoMenuLeft    DispIcoMenuRight
* @Return :
*
*****************************************************************************
*/


void DispIcoMenuInit()
{
    unsigned int tm;  

    ItemNum = IcoMenu[language].TextNum;//多少数据项
    DispItem = IcoMenu[language].Text;  //数据

    if(Flash == FlashMode_AutoInit){//从0进入,初始化Item等值
        PUSH();
        Item = 0;
        Where = 0;
    }

    GUI_SetBkColor(MENU_BC);
    GUI_SetColor(MENU_FC);
 //   GUI_SetFont(MENU_CF);

{
//    GUI_MEMDEV_Handle hMem;
//    hMem = GUI_MEMDEV_Create(0, 0, 240, 320);
//    GUI_MEMDEV_Select(hMem);
    MenuShowBmp(MENU_ICO_BMP, 0, 0);
    SleIcon(Item);
//    GUI_MEMDEV_CopyToLCD(hMem);
//    GUI_MEMDEV_Select(0);
}
    GUI_SetFont(MENU_TF);
    tm = GUI_SetTextMode(GUI_TM_TRANS);
    GUI_DispStringInRect((char *)*(DispItem+Item), &grTitle, GUI_TA_HCENTER|GUI_TA_VCENTER);
    GUI_SetTextMode(tm);
    GUI_SetFont(MENU_CF);
    return;
}

/*
*****************************************************************************
* DispIcoMenuUp - 图标层下确定键的行为
* DESCRIPTION: -
* 分发处理各个跳转
* 第一层菜单的Up键处理
* Return :
*
*****************************************************************************
*/
void DispIcoMenuUp()
{
    int t, li;
    t = Item - 3;

    if (t < 0) {
        li = (ItemNum % 3) ? ItemNum / 3 + 1 : ItemNum / 3;
        li *= 3;
        t = li + t;
        if (t >= ItemNum)
            t -= 3;
     }
     Item = t;
      
//    GUI_DispStringAtBar(*(DispItem+Item),0,ICO_PosY+ICO_YSize,126,GUI_TA_HCENTER);//菜单名字
//    GUI_DrawIcon(icos[Item],ICO_PosX,ICO_PosY);             //图标

//    Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
    Jump2Menu(SelfMenuIndex,FlashMode_ReFlash);
//    Jump2Menu(SelfMenuIndex,FlashMode_ReFlash);

}

void DispIcoMenuDown()
{
    Item += 3;
    if (Item >= ItemNum) {
        Item %= 3;
    }
    
    Jump2Menu(SelfMenuIndex,FlashMode_ReFlash);
}

void DispIcoMenuLeft()
{
    if(Item==0){
        Item = ItemNum-1;
    }else{
        Item--;
    }

    Jump2Menu(SelfMenuIndex,FlashMode_ReFlash);
}

void DispIcoMenuRight(void)
{
    if(Item==(ItemNum-1)){
        Item = 0;
    }else{
        Item++;
    }

    Jump2Menu(SelfMenuIndex,FlashMode_ReFlash);
}

void DispIcoMenuSel(void)
{

    switch(Item){
        case 0:{
            //LCD_Clear(White);
            //功能
            Jump2Menu(MenuFuncIndex,FlashMode_AutoInit);
            return;
        
        }
        case 1: {
            int Rfid_Demo(void);
            Rfid_Demo();
            Jump2Menu(SelfMenuIndex,FlashMode_ReFlash);
            return;
        } 
        case 2: {
            void GUIDEMO_Adc(void);
            GUIDEMO_Adc();
            Jump2Menu(SelfMenuIndex,FlashMode_ReFlash);
            return;
        }
        default:{
            Jump2Menu(MenuTopIndex,FlashMode_ReFlash);
            return;
        }
    }
}

void DispIcoMenuCancel(void)
{
     POP();
}

//---------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -