|
发表于 2008-12-20 11:54:56
|
显示全部楼层
U8 GUI_Button(struct GUI_BUTTON *Button)
{
register data,i;
U16 Bright_RGB,Dark_RGB,RGB,Right_RGB,Left_RGB,Up_RGB,Down_RGB;
U16 Font_RGB,RGB0,RGB1,RGB_Buf[LCD_YSIZE];
U16 x_addr,y_addr,Len,Hight;
U8 r,g,b;
////
if(Button->Str[0]==0) return 0;
////
Font_RGB =Button->Font_RGB;
RGB0 =Button->RGB0;
RGB1 =Button->RGB1;
////
switch(Button->Style)
{
case BN_2D:
if(Button->Status==Down)
{ //如果是按下状态.
if(Button->Font_RGB!=RGB_Tran) Font_RGB=~Button->Font_RGB;
if(Button->RGB0!=RGB_Tran) RGB0=~Button->RGB0;
if(Button->RGB1!=RGB_Tran) RGB1=~Button->RGB1;
}
////
GUI_Label( Button->X,Button->Y,Button->Dx,Button->Dy,
Font_RGB,RGB0,RGB1,
Center,Button->Font,Button->Str);
return 1;
////////////////
case BN_2D_SHADE:
if(Button->Status==Down)
{ //如果是按下状态.
if(Button->Font_RGB!=RGB_Tran) Font_RGB=~Button->Font_RGB;
if(Button->RGB0!=RGB_Tran) RGB0=~Button->RGB0;
if(Button->RGB1!=RGB_Tran) RGB1=~Button->RGB1;
}
////
GUI_ShadeRectangle(Button->X,Button->Y,Button->Dx,Button->Dy,RGB0,RGB1);
GUI_Label( Button->X,Button->Y,Button->Dx,Button->Dy,
Font_RGB,RGB_Tran,RGB565_AVG2(RGB0,RGB1),
Center,Button->Font,Button->Str);
return 1;
////////////////
case BN_3D:
Bright_RGB=(RGB565(23,46,23));
Dark_RGB=(RGB565(7,14,7));
Font_RGB = Button->Font_RGB;
RGB0 = Button->RGB0;
RGB1 = Button->RGB1;
x_addr = Button->X;
y_addr = Button->Y;
Len = Button->Dx;
Hight = Button->Dy;
////
if(Button->Status==Down) //如果是按下状态.
{
Left_RGB=Dark_RGB;
Up_RGB=Dark_RGB;
Right_RGB=Bright_RGB;
Down_RGB=Bright_RGB;
////
if(Font_RGB!=RGB_Tran) Font_RGB = ~(Font_RGB);
if(RGB0!=RGB_Tran) RGB0 = ~(RGB0);
if(RGB1!=RGB_Tran) RGB1 = ~(RGB1);
////
// GUI_3D_Rectangle(x_addr+1,y_addr+1,Len-2,Hight-2,RGB0,RGB1,Left_Up);
}
else
{
Left_RGB=Bright_RGB;
Up_RGB=Bright_RGB;
Right_RGB=Dark_RGB;
Down_RGB=Dark_RGB;
// GUI_3D_Rectangle(x_addr+1,y_addr+1,Len-2,Hight-2,RGB0,RGB1,Right_Down);
}
GUI_Rectangle(x_addr,y_addr,Len,Hight,RGB565(4,8,4));
GUI_Rectangle(x_addr+1,y_addr+1,Len-2,Hight-2,RGB565(20,40,20));
GUI_ShadeRectangle(x_addr+2,y_addr+2,Len-4,Hight-4,RGB0,RGB1);
GUI_Label(x_addr+2,y_addr+2,Len-4,Hight-4,Font_RGB,RGB_Tran,RGB_Tran,Center,Button->Font,Button->Str);
return 1;
////////////////
case BN_BEVEL:
Bright_RGB=(RGB565(23,46,23));
Dark_RGB=(RGB565(7,14,7));
////
Font_RGB = Button->Font_RGB;
RGB0 = Button->RGB0;
RGB1 = Button->RGB1;
x_addr = Button->X;
y_addr = Button->Y;
Len = Button->Dx;
Hight = Button->Dy;
if(Button->Status==Down) //如果是按下状态.
{
if(Font_RGB!=RGB_Tran) Font_RGB = ~(Font_RGB);
if(RGB0!=RGB_Tran) RGB0 = ~(RGB0);
if(RGB1!=RGB_Tran) RGB1 = ~(RGB1);
////
GUI_ShadeBevelRectangle(x_addr,y_addr,Len,Hight,RGB0,RGB1,4);
GUI_BevelRectangle(x_addr,y_addr,Len,Hight,Bright_RGB,4); //Outside
GUI_BevelRectangle(x_addr+1,y_addr+1,Len-2,Hight-2,Dark_RGB,3); //Inside
GUI_Label(x_addr,y_addr,Len,Hight,Font_RGB,RGB_Tran,RGB_Tran,Center,Button->Font,Button->Str);
return 1;
}
else
{
GUI_ShadeBevelRectangle(x_addr,y_addr,Len,Hight,RGB0,RGB1,4);
GUI_BevelRectangle(x_addr,y_addr,Len,Hight,Dark_RGB,4); //Outside
GUI_BevelRectangle(x_addr+1,y_addr+1,Len-2,Hight-2,Bright_RGB,3); //Inside
GUI_Label(x_addr,y_addr,Len,Hight,Font_RGB,RGB_Tran,RGB_Tran,Center,Button->Font,Button->Str);
return 1;
}
////////////////
case BN_BRIGHT:
if(Button->Status==Down) //如果是按下状态.
{
if(Font_RGB!=RGB_Tran) Font_RGB = ~(Font_RGB);
if(RGB0!=RGB_Tran) RGB0 = ~(RGB0);
if(RGB1!=RGB_Tran) RGB1 = ~(RGB1);
////
GUI_BrightButton(Button->X,Button->Y,Button->Dx,Button->Dy,Font_RGB,RGB1,Button->Font,Button->Str);
return 1;
}
else
{
GUI_BrightButton(Button->X,Button->Y,Button->Dx,Button->Dy,Font_RGB,RGB1,Button->Font,Button->Str);
return 1;
}
////////////////
default: return 0;
////////////////
}
}
本贴被 liuweiele 编辑过,最后修改时间:2008-12-20,12:01:11. |
|