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

📄 test1.c

📁 zlg 的GUI实例
💻 C
📖 第 1 页 / 共 4 页
字号:
/****************************************************************************************
* 文件名:TEST.C
* 功能:GUI测试及演示程序。
* 作者:黄绍斌
* 日期:2003.09.09
****************************************************************************************/
#include "config.h"

#define   KEY_OK    3
#define   KEY_NEXT  2
#define   KEY_BACK  1


/****************************************************************************
* 名称:DelayNS()
* 功能:长软件延时
* 入口参数:dly		延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
void  DelayNS(uint32  dly)
{  uint32  i;

   for(; dly>0; dly--) 
      for(i=0; i<5000; i++);
}


/****************************************************************************
* 名称:WaitKey()
* 功能:等待一个有效按键,并返回按键值。本函数有去抖功能。
* 入口参数:无
* 出口参数:返回按键盘值。
****************************************************************************/
uint8  WaitKey(void)
{  uint32  i;
   uint8   key;
   uint8   key_bak;
   
   key = 0;							// 接收按键
   while(0==key)
   {  key = ZLG7290_GetKey();
      for(i=0; i<1000; i++);
   }
   
   key_bak = 1;
   while(0!=key_bak)				// 等待按键放开
   {  key_bak = ZLG7290_GetKey();
      for(i=0; i<1000; i++);
   }
    	
   return(key);
}




/****************************************************************************
* 名称:DispLog()
* 功能:显示LOG,用坚线填充屏幕(填充0xAA)。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  DispLog(void)
{  GUI_FillSCR(0xAA);				// 填充0xAA
   DelayNS(30);
}


/****************************************************************************
* 名称:WaitAKey()
* 功能:等待任一个有效按键,并返回。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  WaitAKey(void)
{  uint8  key;

   while(1)
   {  key = WaitKey();
      if(key==KEY_NEXT) return;
      if(key==KEY_BACK) return;
      if(key==KEY_OK) return;
   }
}


/****************************************************************************
* 名称:DemoLine()
* 功能:绘画直线演示。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  DemoLine(void)
{  WINDOWS  demow;
   
   /* 显示演示窗口 */
   demow.x = 45;
   demow.y = 25;
   demow.with = 150;
   demow.hight = 80;
   demow.title = (uint8 *) "Line for Demo";
   demow.state = (uint8 *) "Enter a key return.";
   GUI_WindowsDraw(&demow);
   
   /* 打钩 */
   GUI_Line(90, 60, 110, 90, 1);
   GUI_Line(110, 90, 190, 50, 1);
   GUI_LineWith(50, 60, 70, 90, 3, 1);
   GUI_LineWith(70, 90, 170, 40, 3, 1);
   
   /* 画垂直线及水平线 */
   GUI_RLine(70, 45, 70, 1);
   GUI_HLine(140, 85, 180, 1);
   
   WaitAKey();						// 等待一按键
   GUI_WindowsHide(&demow);
}


/****************************************************************************
* 名称:DemoCircle()
* 功能:绘画圆演示。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  DemoCircle(void)
{  WINDOWS  demow;
   
   /* 显示演示窗口 */
   demow.x = 45;
   demow.y = 25;
   demow.with = 150;
   demow.hight = 80;
   demow.title = (uint8 *) "Circle for Demo";
   demow.state = (uint8 *) "Enter a key return.";
   GUI_WindowsDraw(&demow);
   
   /* 画两个圆 */
   GUI_CircleFill(75, 60, 15, 1);
   GUI_Circle(100, 70, 5, 1);
   
   /* 画两个交圆,并对交点进行填充 */
   GUI_Circle(135, 65, 20, 1);
   GUI_Circle(155, 65, 20, 1);
   GUI_FloodFill(145, 65, 1);  
   
   WaitAKey();						// 等待一按键
   GUI_WindowsHide(&demow);
}


/****************************************************************************
* 名称:DemoArc()
* 功能:绘画圆弧及扇形演示。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  DemoArc(void)
{  WINDOWS  demow;
   
   /* 显示演示窗口 */
   demow.x = 45;
   demow.y = 25;
   demow.with = 150;
   demow.hight = 80;
   demow.title = (uint8 *) "Arc for Demo";
   demow.state = (uint8 *) "Enter a key return.";
   GUI_WindowsDraw(&demow);
   
   /* 画两个90度角的弧(第3、1像限) */
   GUI_Arc4(75, 70, 20, 3, 1);
   GUI_Arc4(65, 70, 20, 1, 1);
   
   GUI_Pieslice(110, 75, 20, 0, 135, 1);
   GUI_Arc(130, 60, 20, 30, 90, 1);
   GUI_Pieslice(160, 70, 20, 100, 0, 1);
   GUI_FloodFill(165, 72, 1);
   
   WaitAKey();						// 等待一按键
   GUI_WindowsHide(&demow);
}

/****************************************************************************
* 名称:DemoEllipse()
* 功能:绘画随圆演示。
* 入口参数:无
* 出口参数:无
****************************************************************************/  
void  DemoEllipse(void)
{  WINDOWS  demow;
   
   /* 显示演示窗口 */
   demow.x = 45;
   demow.y = 25;
   demow.with = 150;
   demow.hight = 80;
   demow.title = (uint8 *) "Ellipse for Demo";
   demow.state = (uint8 *) "Enter a key return.";
   GUI_WindowsDraw(&demow);
   
   GUI_Ellipse(50, 100, 50, 80, 1);				
   GUI_Ellipse(110, 130, 45, 90, 1);
   GUI_EllipseFill(140, 190, 60, 90, 1);
     
   WaitAKey();						// 等待一按键
   GUI_WindowsHide(&demow);
}



/****************************************************************************
* 名称:DemoRectang()
* 功能:绘画矩形演示。
* 入口参数:无
* 出口参数:无
****************************************************************************/  
void  DemoRectang(void)
{  WINDOWS  demow;
   
   /* 显示演示窗口 */
   demow.x = 45;
   demow.y = 25;
   demow.with = 150;
   demow.hight = 80;
   demow.title = (uint8 *) "Rectang for Demo";
   demow.state = (uint8 *) "Enter a key return.";
   GUI_WindowsDraw(&demow);
     
   /* 画一个矩形及填充矩形 */
   GUI_Rectangle(50, 45, 90, 85, 1);
   GUI_Rectangle(75, 50, 100, 88, 1);
   GUI_RectangleFill(80, 60, 130, 80, 1);
   GUI_Rectangle(110, 50, 180, 90, 1);
   GUI_Rectangle(135, 40, 190, 70, 1);
   WaitAKey();						// 等待一按键
   GUI_WindowsHide(&demow);
}


uint32  const mline[] = {120,40, 110,55, 90,60, 110,70, 120,90, 130,70, 150,60, 130,55, 120,40};
uint32  const poly5[] = {65,45, 50,60, 50,90, 80,90, 80,60, 65,45};
uint32  const poly4[] = {155,50, 190,50, 155,85, 190,85, 155,50};
/****************************************************************************
* 名称:DemoPoly()
* 功能:绘画多边形演示。
* 入口参数:无
* 出口参数:无
****************************************************************************/  
void  DemoPoly(void)
{  WINDOWS  demow;
   
   /* 显示演示窗口 */
   demow.x = 45;
   demow.y = 25;
   demow.with = 150;
   demow.hight = 80;
   demow.title = (uint8 *) "Poly for Demo";
   demow.state = (uint8 *) "Enter a key return.";
   GUI_WindowsDraw(&demow);
   
   GUI_LineS(poly5, 6, 1);
   GUI_LineS(mline, 9, 1);
   GUI_FloodFill(115, 55, 1);
   GUI_LineS(poly4, 5, 1);
   GUI_FloodFill(160, 52, 1);

   WaitAKey();						// 等待一按键
   GUI_WindowsHide(&demow);
}


/*--  调入了一幅图像:C:\WINDOWS\Desktop\windows.bmp  --*/
/*--  宽度x高度=167x124  --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=168x124  --*/
uint8  const windows[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x03,0x83,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0xEF,0xF0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x1F,0xF0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0E,0x00,0x1F,0xE7,0xFE,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x1F,0xEF,0xFD,0xFF,0xFF,0xFF,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x3E,0x00,0x1F,0xFF,
0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x3E,0x00,0x1F,0xFB,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x3F,0xF7,0xFE,0xFF,0xFF,0xFF,0xC0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x7C,0x7F,0x3F,0xFF,0xFE,
0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,
0x00,0xFE,0x00,0x1F,0xFD,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xE0,0x00,0xFC,0x00,0x1F,0xF9,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x01,0xFC,0x3F,0xBF,0xF9,0xFF,
0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x03,0xF8,
0x00,0xFF,0x7F,0xF7,0xE1,0x1F,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0xF0,0x00,0xFE,0x7F,0xE7,0xE0,0x1F,0xF3,0xFF,0xFE,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x01,0xFE,0x7F,0xEF,0xE0,0x1F,

⌨️ 快捷键说明

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