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

📄 aa_hiresantialiasing.c

📁 uc/os下的gui,友好的交互界面可以使你的产品更有吸引力
💻 C
字号:
/**********************************************************************                SEGGER MICROCONTROLLER SYSTEME GmbH                 **        Solutions for real time microcontroller applications        **                                                                    **                    emWin GSC sample code                           **                                                                    ***********************************************************************----------------------------------------------------------------------File        : AA_HiResAntialiasing.cPurpose     : Demonstrates high resolution antialiasing----------------------------------------------------------------------*/#include "GUI.h"/*********************************************************************       defines**********************************************************************/#define countof(Obj) (sizeof(Obj)/sizeof(Obj[0]))/*********************************************************************       static variables**********************************************************************/static const GUI_POINT _aPointer[] = {  { 0,  3},  {85,  1},  {90,  0},  {85, -1},  { 0, -3}};static GUI_POINT _aPointerHiRes[countof(_aPointer)];typedef struct {  GUI_AUTODEV_INFO AutoInfo;  GUI_POINT aPoints[countof(_aPointer)];  int Factor;} PARAM;/*********************************************************************       static functions**********************************************************************//*********************************************************************       _DrawHiRes  This function draws the high resolution pointer*/static void _DrawHiRes(void * p) {  PARAM * pParam = (PARAM *)p;  if (pParam->AutoInfo.DrawFixed) {    GUI_ClearRect(60, 60, 159, 159);  }  GUI_AA_FillPolygon(pParam->aPoints,                      countof(_aPointer),                      65  * pParam->Factor,                      155 * pParam->Factor);}/*********************************************************************       _Draw  This function draws the non high resolution pointer*/static void _Draw(void * p) {  PARAM * pParam = (PARAM *)p;  if (pParam->AutoInfo.DrawFixed) {    GUI_ClearRect(160, 60, 259, 159);  }  GUI_AA_FillPolygon(pParam->aPoints, countof(_aPointer), 165, 155);}/*********************************************************************       _ShowHiresAntialiasing  This function creates the memory auto devices and handle the  rotation of the pointers*/static void _ShowHiresAntialiasing(void) {  int i;  GUI_AUTODEV aAuto[2];  PARAM Param;  Param.Factor = 3;  GUI_SetBkColor(GUI_BLACK);  GUI_Clear();  GUI_SetColor(GUI_WHITE);  GUI_SetTextAlign(GUI_TA_HCENTER);  GUI_SetFont(&GUI_Font24_ASCII);  GUI_DispStringAt("AA_HiResAntialiasing - Sample", 160, 5);  GUI_SetFont(&GUI_Font6x8);  GUI_DispStringHCenterAt("Using\nhigh\nresolution\nmode", 110, 180);  GUI_DispStringHCenterAt("Not using\nhigh\nresolution\nmode", 210, 180);  /* Create GUI_AUTODEV objects */  for (i = 0; i < countof(aAuto); i++) {    GUI_MEMDEV_CreateAuto(&aAuto[i]);  }  /* Calculate pointer for high resolution */  for (i = 0; i < countof(_aPointer); i++) {    _aPointerHiRes[i].x = _aPointer[i].x * Param.Factor;    _aPointerHiRes[i].y = _aPointer[i].y * Param.Factor;  }  GUI_AA_SetFactor(Param.Factor); /* Set antialiasing factor */  while(1) {    for (i = 0; i < 1800; i++) {      float Angle = (i >= 900) ? 1800 - i : i;      Angle *= 3.1415926f / 1800;      /* Draw pointer with high resolution */      GUI_AA_EnableHiRes();      GUI_RotatePolygon(Param.aPoints, _aPointerHiRes, countof(_aPointer), Angle);      GUI_MEMDEV_DrawAuto(&aAuto[0], &Param.AutoInfo, _DrawHiRes, &Param);      /* Draw pointer without high resolution */      GUI_AA_DisableHiRes();      GUI_RotatePolygon(Param.aPoints, _aPointer, countof(_aPointer), Angle);      GUI_MEMDEV_DrawAuto(&aAuto[1], &Param.AutoInfo, _Draw, &Param);      GUI_Delay(2);    }  }}/*********************************************************************       MainTask**       Demonstrate high resolution by drawing rotating pointers**********************************************************************/void MainTask(void) {  GUI_Init();  _ShowHiresAntialiasing();}

⌨️ 快捷键说明

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