Example #1
0
void GUI_DrawBitmapExp(int x0,    int y0,
                       int XSize, int YSize,
                       int XMul,  int YMul,
                       int BitsPerPixel, 
                       int BytesPerLine,
                       const U8* pData,
                       const GUI_LOGPALETTE* pPal)
{
  GUI_DRAWMODE PrevDraw;
  GUI_LOCK();
  PrevDraw = GUI_SetDrawMode((pPal && pPal->HasTrans) ? GUI_DRAWMODE_TRANS : 0);
  #if (GUI_WINSUPPORT)
    WM_ADDORG(x0,y0);
    {
      GUI_RECT r;
      r.x0 = x0;
      r.x1 = x0 + XSize * XMul -1;
      r.y0 = y0;
      r.y1 = y0 + YSize * YMul -1;
      WM_ITERATE_START(&r); {
  #endif
  LCD_DrawBitmap( x0, y0 ,XSize ,YSize, XMul, YMul
                 ,BitsPerPixel, BytesPerLine, pData, pPal);
  #if (GUI_WINSUPPORT)
      } WM_ITERATE_END();
    }
  #endif
  GUI_SetDrawMode(PrevDraw);
  GUI_UNLOCK();
}
void GUIDEMO_Circle(void) {
  int XSize = LCD_GetXSize();
  int YSize = LCD_GetYSize();
  GUIDEMO_ShowIntro("Circles",
                    "\nArbitrary circles"
                    "\nand arcs.");
  GUI_Clear();
  GUI_SetFont(&GUI_Font8x16);
  GUI_SetColor(GUI_WHITE);
  #if GUIDEMO_LARGE
    GUI_DispStringAt("Circle", 0, 0);
  #endif
  GUI_FillCircle (XSize / 2, YSize / 2, 50);
  GUIDEMO_Wait();
  GUI_SetDrawMode(GUI_DM_XOR);
  GUI_FillCircle (XSize / 2, YSize / 2, 60);
  GUI_SetDrawMode(0);
  GUIDEMO_Wait();
  #if GUI_SUPPORT_AA
    #if GUIDEMO_LARGE
      GUIDEMO_ShowInfo("Circles with\nAntialiasing");
    #endif
    GUI_Clear();
    GUI_SetColor(GUI_WHITE);
    #if GUIDEMO_LARGE
      GUI_DispStringAt("Antialiased\ncircle", 0, 0);
    #endif
    GUI_AA_FillCircle(XSize / 2, YSize / 2, 47);
    GUIDEMO_Wait();
  #endif
}
Example #3
0
/********************************************************************
*
*       _DrawBitmap
*/
static _DrawBitmap(const GUI_BITMAP* pBitmap, int x, int y, int Trans, int XOr) {
  GUI_LOGPALETTE Pal;
  GUI_BITMAP Bitmap;
  int PrevDM;
  memcpy(&Bitmap, pBitmap, sizeof(GUI_BITMAP));
  memcpy(&Pal, Bitmap.pPal, sizeof(GUI_LOGPALETTE));
  Bitmap.pPal  = &Pal;
  Pal.HasTrans = Trans;
  PrevDM = GUI_SetDrawMode((XOr) ? GUI_DM_XOR : 0);
  GUI_DrawBitmap(&Bitmap, x, y);
  GUI_SetDrawMode(PrevDM);
}
Example #4
0
//@@@@@@@@@@@@@@@@@@@@@  删除指针形状 @@@@@@@@@@@@@@@@@@@@@@@@@@
void delete_point(void)
{
GUI_SetDrawMode(GUI_DM_NORMAL);
GUI_SetColor(GUI_GREEN);

GUI_DrawRect(store_x+2,store_y+2,store_x+18,store_y+18);
}
Example #5
0
void key_s3c(void)
{
int which_key,i;
while((rPDATG & 0xf0)==0xf0);
which_key=rPDATG&0xf0;
    switch(which_key)
    {
case 0xe0:
   Led_Display(0x1);
   point.y_point-=20;
   if(point.y_point<20)
   point.y_point=200;
   break;
case 0xd0:
   Led_Display(0x2);
   point.x_point-=20;
   if(point.x_point<20)
   point.x_point=200;
   break;
case 0xb0:
   Led_Display(0x4);
   if( map[point.y_map][point.x_map]==0 )
{
change_color();
map[point.y_map][point.x_map]=point.color;
draw_map();

if( if_won(point.y_map,point.x_map,point.color) )
{
GUI_SetTextMode(GUI_DM_TRANS); //设置为透明
GUI_SetFont(&GUI_Font8x16x1x2);
GUI_DispStringAt("win!",250,90);

for(i=0;i<20;i++)
GUI_Delay(1000);
map_initial();

GUI_SetDrawMode(GUI_DM_NORMAL);
GUI_SetColor(GUI_GREEN);
GUI_FillRect(0,0,320,240);
draw_net();
draw_point();
}

}
   break;
case 0x70:
   Led_Display(0x7);
   /*
   point.x_point+=20;
   if(point.x_point>200)
   point.x_point-=20;*/
   break;
default :
   break;
    }
    
    
}
Example #6
0
//@@@@@@@@@@@@@@@@@@@@@  画出当前光标所在的位置 @@@@@@@@@@@@@@@@@@ 
void draw_point(void)
{
GUI_SetDrawMode(GUI_DM_NORMAL);
GUI_SetColor(GUI_BLUE);

GUI_DrawRect(point.x_point+2,point.y_point+2,point.x_point+18,point.y_point+18);

}
Example #7
0
void GL_SetDefault(void) {
  GUI_SetBkColor(GUI_DEFAULT_BKCOLOR);
  GUI_SetColor  (GUI_DEFAULT_COLOR);
  GUI_SetPenSize(1);
  GUI_SetTextAlign(0);
  GUI_SetTextMode(0);
  GUI_SetDrawMode(0);
  GUI_SetFont(GUI_DEFAULT_FONT);
  GUI_SetLineStyle(GUI_LS_SOLID);
}
Example #8
0
//@@@@@@@@@@@@@@@@@@@@@@  绘制网格 @@@@@@@@@@@@@@@@@@@@@@@@@@
void draw_net(void)
{
int i;

GUI_SetDrawMode(GUI_DM_NORMAL);
GUI_SetColor(GUI_RED);

for(i=0;i<=10;i++)
GUI_DrawHLine(20+20*i,20,220); //y,x0,x1
for(i=0;i<=10;i++)
GUI_DrawVLine(20+20*i,20,220); //x,y0,y1

}
Example #9
0
/*********************************************************************
*
*       GUI_InvertRect
*/
void GUI_InvertRect(int x0, int y0, int x1, int y1) {
  GUI_DRAWMODE PrevDraw;
  #if (GUI_WINSUPPORT)
    GUI_RECT r;
  #endif
  GUI_LOCK();
  PrevDraw = GUI_SetDrawMode(GUI_DRAWMODE_XOR);
  #if (GUI_WINSUPPORT)
    WM_ADDORG(x0, y0);
    WM_ADDORG(x1, y1);
    r.x0 = x0;
    r.x1 = x1;
    r.y0 = y0;
    r.y1 = y1;
    WM_ITERATE_START(&r); {
  #endif
  LCD_FillRect(x0, y0, x1, y1);
  #if (GUI_WINSUPPORT)
    } WM_ITERATE_END();
  #endif
  GUI_SetDrawMode(PrevDraw);
  GUI_UNLOCK();
}
Example #10
0
void DispInit(void)
{	
	LcdInit();
	LCD_OFF();
	GUI_Init();	
  GUI_SetBkColor(GUI_BLACK);
  GUI_Clear();
	GUI_SetDrawMode(GUI_DRAWMODE_NORMAL);
	GUI_DrawBitmap(&bm_yanghe_logo,0,0);
	LCD_ON();
	Delay_Ms(2000);
	GUI_SetFont(&GUI_NOW_FONT);
	Display_Welcome();
}
Example #11
0
//@@@@@@@@@@@@@@@@@@@@@  屏幕上显示的按键  @@@@@@@@@@@@@@@@@@@@@@@@@@
static void Button(void) 
{

 BUTTON_Handle hButton[6];
 int t=0;
 int i=0;
 /* Create the button*/
      //BUTTON_SetBkColor(hButton[0],0,GUI_RED);

 hButton[0] = BUTTON_Create(260, 160, 20, 20, 1, WM_CF_SHOW);
 hButton[1] = BUTTON_Create(240, 180, 20, 20, 2, WM_CF_SHOW);
 hButton[2] = BUTTON_Create(260, 180, 20, 20, 3, WM_CF_SHOW);
 hButton[3] = BUTTON_Create(280, 180, 20, 20, 4, WM_CF_SHOW);
 hButton[4] = BUTTON_Create(260, 220, 20, 20, 5, WM_CF_SHOW);
 //hButton[5] = BUTTON_Create(240, 220, 20, 20, 6, WM_CF_SHOW);

 BUTTON_SetText(hButton[0], "w");
 BUTTON_SetText(hButton[1], "a");
 BUTTON_SetText(hButton[2], "s");
 BUTTON_SetText(hButton[3], "d");
 BUTTON_SetText(hButton[4], "B");
 //BUTTON_SetText(hButton[5], "W");

 t=GUI_WaitKey();
 
 switch( t )
 {
 case 1:
 point.y_point-=20;
 if(point.y_point<20)
 point.y_point+=20;
 break;
 case 2:
 point.x_point-=20;
 if(point.x_point<20)
 point.x_point+=20;
 break;
 case 3:
 point.y_point+=20;
 if(point.y_point>200)
 point.y_point-=20;
 break;
 case 4:
 point.x_point+=20;
 if(point.x_point>200)
 point.x_point-=20;
 break;
 case 5:
 if( map[point.y_map][point.x_map]==0 )
 {
change_color();
map[point.y_map][point.x_map]=point.color;
draw_map();

if( if_won(point.y_map,point.x_map,point.color) )
{
GUI_SetTextMode(GUI_DM_TRANS); //设置为透明
GUI_SetFont(&GUI_Font8x16x1x2);
GUI_DispStringAt("win!",250,90);

for(i=0;i<5;i++)
GUI_Delay(1000);
map_initial();

GUI_SetDrawMode(GUI_DM_NORMAL);
GUI_SetColor(GUI_GREEN);
GUI_FillRect(0,0,320,240);
draw_net();
draw_point();
}

 }
 break;
 case 6:
 /*
 if( map[point.y_map][point.x_map]==0 )
map[point.y_map][point.x_map]=1;
 */
 break;
 default:

 break;
 
 }

 
 
 for(t=0;t<6;t++)
BUTTON_Delete(hButton[t]);
 
}
Example #12
0
static int StaticCtrlProc (__gui_msg_t *msg)
{
    __u32	            	dwStyle;
    static_data_t*			pData;

    dwStyle = GUI_WinGetStyle(msg->h_deswin);

    switch(msg->id)
    {
        case GUI_MSG_CREATE:
            pData = (static_data_t*) orange_malloc(sizeof(static_data_t));
            if (pData == NULL) 
            {
                return ORANGE_FAIL;
            }

            pData->status       = 0;
            pData->hmem         = 0;
            pData->str_move     = 0;
            pData->data         = (__u32)GUI_WinGetAttr(msg->h_deswin);
            GUI_CtrlWinSetAddData(msg->h_deswin,(__u32)pData);
            return 0;
       
        case GUI_MSG_DESTROY:
            pData = (static_data_t*)GUI_CtrlWinGetAddData(msg->h_deswin);
            if(pData->str_move)
            {
                GUI_LongStringDelete(pData->str_move);
            }
            orange_mfree ((void *)GUI_CtrlWinGetAddData(msg->h_deswin));
            return 0;
        
        case GUI_MSG_ENABLE:
            if (msg->dwAddData1 && (dwStyle & WS_DISABLED))
            {
                dwStyle &= ~WS_DISABLED;

                GUI_WinSetStyle(msg->h_deswin,dwStyle);
            }
            else if (!msg->dwAddData1 && !(dwStyle & WS_DISABLED))
            {
                dwStyle |= WS_DISABLED;

                GUI_WinSetStyle(msg->h_deswin,dwStyle);
            }
            else
            {
                return 0;
            }
            return 0;
            
        case GUI_MSG_SET_UNFOCUS:
            if((STATIC_DRAWSTATUS(msg->h_deswin) & STATICST_FOCUS))
            {
                STATIC_DRAWSTATUS(msg->h_deswin) &= (~STATICST_FOCUS);
                

    			GUI_InvalidateRect (msg->h_deswin, NULL, ORANGE_TRUE);
            }
            return 0;

        case GUI_MSG_SET_FOCUS:          
            if(!(STATIC_DRAWSTATUS(msg->h_deswin) & STATICST_FOCUS))
            {
                STATIC_DRAWSTATUS(msg->h_deswin) |= STATICST_FOCUS;

    			GUI_InvalidateRect (msg->h_deswin, NULL, ORANGE_TRUE);
            }
            return 0;
        
        case GUI_MSG_KEY:
			switch(msg->dwAddData1)
			{
				/*case GUI_MSG_KEY_RISE:
				{
					{
						__gui_notify_msg_t      notify_msg;

		                notify_msg.hWnd     = msg->h_deswin;
		                notify_msg.id       = GUI_WinGetItemId(msg->h_deswin);
		                notify_msg.msgcode  = STN_CLICKED;
		                notify_msg.dwAddData= last_key;
		                    
		                GUI_NotifyParent (&notify_msg);
		            }
				}
                return 0;*/
                
				case GUI_MSG_KEY_DOWN:
				{
					if(msg->dwAddData2 == KEY_UP_ACTION)
					{
						{
							__gui_notify_msg_t      notify_msg;

		                	notify_msg.hWnd     = msg->h_deswin;
		                	notify_msg.id       = GUI_WinGetItemId(msg->h_deswin);
		                	notify_msg.msgcode  = STN_CLICKED;
		                	notify_msg.dwAddData= last_key;
		                    
		                GUI_NotifyParent (&notify_msg);
		            	}
					}

					if(msg->dwAddData2 == KEY_DOWN_ACTION)
					{
						{
							__gui_notify_msg_t      notify_msg;

		                	notify_msg.hWnd     = msg->h_deswin;
		                	notify_msg.id       = GUI_WinGetItemId(msg->h_deswin);
		                	notify_msg.msgcode  = STN_PUSHED;
		                	notify_msg.dwAddData= GUI_MSG_KEY_DOWN;
		                    
		                	GUI_NotifyParent (&notify_msg);
		            	}
					}
		            
				}
                return 0;
                
				case GUI_MSG_KEY_ENTER:
				{
					if(msg->dwAddData2 == KEY_UP_ACTION)
					{
						{
							__gui_notify_msg_t      notify_msg;

		                	notify_msg.hWnd     = msg->h_deswin;
		                	notify_msg.id       = GUI_WinGetItemId(msg->h_deswin);
		                	notify_msg.msgcode  = STN_CLICKED;
		                	notify_msg.dwAddData= last_key;
		                    
		                GUI_NotifyParent (&notify_msg);
		            	}
					}

					if(msg->dwAddData2 == KEY_DOWN_ACTION)
					{
						{
							__gui_notify_msg_t      notify_msg;
	
		                	notify_msg.hWnd     = msg->h_deswin;
		                	notify_msg.id       = GUI_WinGetItemId(msg->h_deswin);
		                	notify_msg.msgcode  = STN_PUSHED;
		                	notify_msg.dwAddData= GUI_MSG_KEY_ENTER;
		                    
		                	GUI_NotifyParent (&notify_msg);
		            	}
					}
		            
				}

                return 0;
                
				case GUI_MSG_KEY_RIGHT:
				case GUI_MSG_KEY_LEFT:
				case GUI_MSG_KEY_UP:
				default:
                {
					if(msg->dwAddData2 == KEY_UP_ACTION)
					{
						{
							__gui_notify_msg_t      notify_msg;

		                	notify_msg.hWnd     = msg->h_deswin;
		                	notify_msg.id       = GUI_WinGetItemId(msg->h_deswin);
		                	notify_msg.msgcode  = STN_CLICKED;
		                	notify_msg.dwAddData= last_key;
		                    
		                GUI_NotifyParent (&notify_msg);
		            	}
					}

					if(msg->dwAddData2 == KEY_DOWN_ACTION)
					{
						{
							__gui_notify_msg_t      notify_msg;
	
		                	notify_msg.hWnd     = msg->h_deswin;
		                	notify_msg.id       = GUI_WinGetItemId(msg->h_deswin);
		                	notify_msg.msgcode  = STN_PUSHED;
		                	notify_msg.dwAddData= msg->dwAddData1;
		                    
		                	GUI_NotifyParent (&notify_msg);
		            	}
					}
					
                }
				break;
					
			}

            /*if(msg->dwAddData1 != GUI_MSG_KEY_RISE)
            {
                last_key = msg->dwAddData1;
            }
            else
            {
                last_key = 0xffffffff;
            }*/
            last_key = msg->dwAddData1;
            
        return 0;
        
        case GUI_MSG_TOUCH:
			{
				switch(msg->dwAddData1)
				{
					case GUI_MSG_TOUCH_DOWN:
					{
						{
							__gui_notify_msg_t      notify_msg;

			                notify_msg.hWnd     = msg->h_deswin;
			                notify_msg.id       = GUI_WinGetItemId(msg->h_deswin);
			                notify_msg.msgcode  = STN_PUSHED;
			                notify_msg.dwAddData= 0;
			                    
			                GUI_NotifyParent (&notify_msg);
						}		            
					}
					break;
					
					case GUI_MSG_TOUCH_UP:
					{
						{
							__gui_notify_msg_t      notify_msg;

			                notify_msg.hWnd     = msg->h_deswin;
			                notify_msg.id       = GUI_WinGetItemId(msg->h_deswin);
			                notify_msg.msgcode  = STN_CLICKED;
			                notify_msg.dwAddData= 0;
			                    
			                GUI_NotifyParent (&notify_msg);
				         }
					}
					break;	
				}
			}
            
        return 0;

        case GUI_MSG_WIN_WAKEUP:
        case GUI_MSG_PAINT:
        {
			__gui_rect_t 	rcrect;
            RECT            fbrect;
			//void         	*pBMP;
            static_data_t   *static_data;
			static_para_t  	*user_data;
			//__u32			 color;

            //static_data = (static_para_t *)GUI_CtrlWinGetAddData(msg->h_deswin);

			user_data   = (static_para_t *)(((static_data_t *)GUI_CtrlWinGetAddData(msg->h_deswin))->data);
            static_data = (static_data_t *)GUI_CtrlWinGetAddData(msg->h_deswin);

            GUI_LyrWinSel(GUI_LyrP2H(GUI_WinGetLyrWin(msg->h_deswin)));
            
            GUI_WinGetClientFBRect(msg->h_deswin,&fbrect);
            if(!static_data->hmem && (GUI_WinGetStyle(msg->h_deswin) & WS_MEMDEV))
            {
            	#if GUI_CORE_MEMDEV_EN		//avoid complier error, by Derek
                static_data->hmem = GUI_MEMDEV_Create(fbrect.x,fbrect.y,fbrect.width,fbrect.height);
				#endif
            }
			SysRectToGuiRect(&fbrect,&rcrect);

			if(static_data->hmem)
			{
				#if GUI_CORE_MEMDEV_EN		//avoid complier error, by Derek
            	GUI_MEMDEV_Select(static_data->hmem);           // start memory device
            	#endif
        	}
				
        	if (STATIC_DRAWSTATUS(msg->h_deswin) & STATICST_FOCUS)
            {	
                GUI_RECT        rect;
                
                GUI_SetBkColor(user_data->bk_color);
            	GUI_ClearRect(rcrect.left,rcrect.top,
                 			rcrect.right,rcrect.bottom);

                if(user_data->focus_bmp)
                {
                    GUI_BMP_Draw(user_data->focus_bmp, rcrect.left + user_data->bmp_pos.x, 
    					rcrect.top + user_data->bmp_pos.y);
                }
				
				if(user_data->alpha_en)
                {
                    GUI_OpenAlphaBlend();
                }
                
				GUI_CharSetToEncode(user_data->draw_code);
				GUI_SetFont(user_data->draw_font);

				GUI_SetDrawMode(GUI_DRAWMODE_TRANS);
			    GUI_SetColor(user_data->ftxt_color);

                rect.x0 = rcrect.left;
                rect.y0 = rcrect.top;
                rect.x1 = rcrect.right;
                rect.y1 = rcrect.bottom;
                if(!user_data->txt_align)
                {
    			    GUI_DispStringAt(user_data->text,
    			                     rcrect.left + user_data->text_pos.x, 
    					            rcrect.top + user_data->text_pos.y);
                }
                else
                {
                    GUI_DispStringInRect(user_data->text,&rect,user_data->txt_align);
                }
            }
            else
            {
                GUI_RECT        rect;
                
                GUI_SetBkColor(user_data->bk_color);
				
            	GUI_ClearRect(rcrect.left,rcrect.top,
                 			rcrect.right,rcrect.bottom);

                if(user_data->unfocus_bmp)
                {
                    GUI_BMP_Draw(user_data->unfocus_bmp, rcrect.left + user_data->bmp_pos.x, 
    					rcrect.top + user_data->bmp_pos.y);
                }
				
				if(user_data->alpha_en)
                {
                    GUI_OpenAlphaBlend();
                }
                
				GUI_CharSetToEncode(user_data->draw_code);
				GUI_SetFont(user_data->draw_font);

				GUI_SetDrawMode(GUI_DRAWMODE_TRANS);
			    GUI_SetColor(user_data->uftxt_color);

                rect.x0 = rcrect.left;
                rect.y0 = rcrect.top;
                rect.x1 = rcrect.right;
                rect.y1 = rcrect.bottom;
                
			    if(!user_data->txt_align)
                {
    			    GUI_DispStringAt(user_data->text,
    			                     rcrect.left + user_data->text_pos.x, 
    					            rcrect.top + user_data->text_pos.y);
                }
                else
                {
                    GUI_DispStringInRect(user_data->text,&rect,user_data->txt_align);
                }
            }
            if(static_data->hmem)
            {
            	#if GUI_CORE_MEMDEV_EN		//avoid complier error, by Derek
	            GUI_MEMDEV_CopyToLCD( static_data->hmem );          // copy from memory device to fb
		        GUI_MEMDEV_Select( NULL );                    // stop memory device
		        GUI_MEMDEV_Delete(static_data->hmem);
				#endif
	            static_data->hmem = NULL;
        	}

            if(user_data->alpha_en)
            {
                GUI_CloseAlphaBlend();
            }

            GUI_LyrWinFlushFB(GUI_WinGetLyrWin(msg->h_deswin));
        }
        return 0;

        default:
        break;
    }
    
    return GUI_CtrlWinDefaultProc (msg);
}
Example #13
0
static void _spinbox_ctrl_paint(__gui_msg_t * msg)
{
	char					str[128];
	__gui_rect_t			rcrect;
	RECT					fbrect;
	spinbox_data_t	 		*spinbox_data;
	spinbox_para_t			*user_data; 		
	
	user_data	= (spinbox_para_t *)(((spinbox_data_t *)GUI_CtrlWinGetAddData(msg->h_deswin))->data);
	spinbox_data = (spinbox_data_t *)GUI_CtrlWinGetAddData(msg->h_deswin);
	
	GUI_LyrWinSel((H_LYR)GUI_WinGetLyrWin(msg->h_deswin));
	GUI_WinGetClientFBRect(msg->h_deswin,&fbrect);
	if(!spinbox_data->hmem)
	{
		#if GUI_CORE_MEMDEV_EN		//avoid complier error, by Derek
		spinbox_data->hmem = GUI_MEMDEV_Create(fbrect.x,fbrect.y,fbrect.width,fbrect.height);
		GUI_MEMDEV_Select(spinbox_data->hmem);
		#endif
	}			 
	
	SysRectToGuiRect(&fbrect,&rcrect);
	
	GUI_OpenAlphaBlend();
	if (SPINBOX_DRAWSTATUS(msg->h_deswin) & BST_PUSHED)
	{	
		GUI_SetBkColor(user_data->bk_color);
		GUI_ClearRect(rcrect.left, rcrect.top, rcrect.right, rcrect.bottom);
		
		GUI_CharSetToEncode(user_data->draw_code);
		
		GUI_SetFont(user_data->draw_font);
	
		GUI_SetDrawMode(GUI_DRAWMODE_TRANS);						
		if(SPINBOX_DRAWFLAG(msg->h_deswin) & BST_LEFT)
		{
			GUI_BMP_Draw(user_data->ufup_bmp, rcrect.left + user_data->upbmp_pos.x, 
						 rcrect.top + user_data->upbmp_pos.y);
			GUI_BMP_Draw(user_data->fdn_bmp, rcrect.left + user_data->dnbmp_pos.x, 
						 rcrect.top + user_data->dnbmp_pos.y); 
		}
		else
		{	
			GUI_BMP_Draw(user_data->fup_bmp, rcrect.left + user_data->upbmp_pos.x, 
						 rcrect.top + user_data->upbmp_pos.y);					
			GUI_BMP_Draw(user_data->ufdn_bmp, rcrect.left + user_data->dnbmp_pos.x, 
				 		 rcrect.top + user_data->dnbmp_pos.y);	
		}
		
		GUI_SetColor(user_data->ftxt_color);
		eLIBs_uint2str_dec(user_data->cur_value, str);
		GUI_DispStringHCenterAt(str, rcrect.left + user_data->text_pos.x, rcrect.top + user_data->text_pos.y);		
	}
	else
	{			
		GUI_SetBkColor(user_data->bk_color);
		GUI_ClearRect(rcrect.left, rcrect.top, rcrect.right, rcrect.bottom);
	
		GUI_CharSetToEncode(user_data->draw_code);
		
		GUI_SetFont(user_data->draw_font);
	
		GUI_SetDrawMode(GUI_DRAWMODE_TRANS);
		GUI_BMP_Draw(user_data->ufup_bmp, rcrect.left + user_data->upbmp_pos.x, 
					  rcrect.top + user_data->upbmp_pos.y);
		GUI_BMP_Draw(user_data->ufdn_bmp, rcrect.left + user_data->dnbmp_pos.x, 
					  rcrect.top + user_data->dnbmp_pos.y);	
					  
		GUI_SetColor(user_data->uftxt_color);	
		eLIBs_uint2str_dec(user_data->cur_value, str);
		GUI_DispStringHCenterAt(str, rcrect.left + user_data->text_pos.x,rcrect.top + user_data->text_pos.y);					  						
	}
	GUI_LyrWinFlushFB((H_LYR)GUI_WinGetLyrWin(msg->h_deswin));
	GUI_CloseAlphaBlend();	
	
	if(spinbox_data->hmem)
	{
		#if GUI_CORE_MEMDEV_EN		//avoid complier error, by Derek
		GUI_MEMDEV_CopyToLCD( spinbox_data->hmem ); 
		GUI_MEMDEV_Select( NULL );			
		GUI_MEMDEV_Delete(spinbox_data->hmem);
		#endif
		spinbox_data->hmem = NULL;
	}	

}