📄 aa_hirespixels.c
字号:
/********************************************************************** SEGGER MICROCONTROLLER SYSTEME GmbH ** Solutions for real time microcontroller applications ** ** emWin GSC sample code ** ***********************************************************************----------------------------------------------------------------------File : AA_HiResPixels.cPurpose : Demonstrates high resolution pixels----------------------------------------------------------------------*/#include "GUI.h"#include "WM.h"/********************************************************************* defines**********************************************************************/#define countof(Array) (sizeof(Array) / sizeof(Array[0]))#define AA_FACTOR 4#define POLY_SIZE 19#define POLY_POINTS 3/********************************************************************* static variables**********************************************************************/static int _pos_x1 = 30;static int _pos_y1 = 30;static int _pos_x2 = 125;static int _pos_y2 = 30;static int _pos_x3 = 220 * AA_FACTOR;static int _pos_y3 = 30 * AA_FACTOR;static int _color_d = -1;static GUI_COLOR _color_a = 0xFF00FE;static GUI_COLOR _color_b = 0x00FEFF;static GUI_COLOR _color_c = 0xFEFFFE;static const GUI_POINT _aPolygon_src[] = { { 0 , -POLY_SIZE * 1.4142 }, { POLY_SIZE * 1.2247, POLY_SIZE * 0.7071 }, { -POLY_SIZE * 1.2247, POLY_SIZE * 0.7071 },};static const GUI_POINT _aPolygonHiRes_src[] = { { 0 * AA_FACTOR, -POLY_SIZE * AA_FACTOR * 1.4142 }, { POLY_SIZE * AA_FACTOR * 1.2247, POLY_SIZE * AA_FACTOR * 0.7071 }, { -POLY_SIZE * AA_FACTOR * 1.2247, POLY_SIZE * AA_FACTOR * 0.7071 },};static GUI_POINT _aPolygon[POLY_POINTS];static GUI_POINT _aPolygonHiRes[POLY_POINTS];/********************************************************************* static functions**********************************************************************//********************************************************************* _cbWindow This is the callback for the window. A callback was used for memory devices.*/static void _cbWindow(WM_MESSAGE* pMsg) { switch (pMsg->MsgId) { case WM_PAINT: GUI_SetBkColor(_color_a); GUI_ClearRect( 0, 0, 250, 14); GUI_SetBkColor(_color_b); GUI_ClearRect( 0, 15, 250, 29); GUI_SetBkColor(GUI_BLACK); GUI_ClearRect( 0, 30, 250, 60); GUI_SetColor(_color_c); GUI_FillPolygon(_aPolygon, POLY_POINTS, _pos_x1, _pos_y1); GUI_AA_FillPolygon(_aPolygon, POLY_POINTS, _pos_x2, _pos_y2); GUI_AA_EnableHiRes(); GUI_AA_FillPolygon(_aPolygonHiRes, POLY_POINTS, _pos_x3, _pos_y3); GUI_AA_DisableHiRes(); break; default: WM_DefaultProc(pMsg); }}/********************************************************************* _CalcColor Calculates the color-fading.*/static void _CalcColor(void) { _color_a += 0x000002 * _color_d; _color_b += 0x000200 * _color_d; _color_c += 0x020002 * _color_d; if (_color_c == 0xFEFFFE || _color_c == 0x00FF00) { _color_d = -_color_d; }}/********************************************************************* _ShowHiResPixels This is frame-function for the callback. It creates the window and handles the rotation of polygons and colors.*/static void _ShowHiResPixels(void) { WM_HWIN hWindow; const GUI_FONT *font_old; float pi, step, angle; int i, tm; pi = 3.1415926f; step = pi / 180; GUI_SetBkColor(GUI_BLACK); GUI_Clear(); GUI_SetColor(GUI_WHITE); GUI_SetTextAlign(GUI_TA_HCENTER); font_old = GUI_SetFont(&GUI_Font24_ASCII); GUI_DispStringAt("AA_HiResPixels - Sample", 160, 5); GUI_SetFont(font_old); GUI_SetColor(GUI_RED); GUI_DispStringHCenterAt("not\nantialised", 65, 100); GUI_SetColor(GUI_GREEN); GUI_DispStringHCenterAt("antialised", 160, 100); GUI_SetColor(GUI_BLUE); GUI_DispStringHCenterAt("antialised\nwith high\nresolution", 255, 100); hWindow = WM_CreateWindow(35, 140, 250, 60, WM_CF_SHOW | WM_CF_MEMDEV, &_cbWindow, 0); WM_SelectWindow(hWindow); GUI_AA_SetFactor(AA_FACTOR); while (1) { for (i=0, angle=0; i<360; i++) { tm = GUI_GetTime(); angle += step; GUI_RotatePolygon(_aPolygonHiRes, _aPolygonHiRes_src, POLY_POINTS, angle); GUI_RotatePolygon(_aPolygon, _aPolygon_src, POLY_POINTS, angle); _CalcColor(); WM_InvalidateWindow(hWindow); while (((GUI_GetTime()-tm) < 50) || (WM_Exec1() != 0)); } } WM_DeleteWindow(hWindow);}/********************************************************************* MainTask** Demonstrates the effect of high resolution coordinates**********************************************************************/void MainTask(void) { GUI_Init(); _ShowHiResPixels();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -