|

楼主 |
发表于 2020-2-4 15:50:04
|
显示全部楼层
#include "DIALOG.h"
#include "stdint.h"
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
static WM_HTIMER hTimer;
GUI_MEMDEV_Handle hMem;
enum
{
ID_WINDOW_0 = (GUI_ID_USER + 0x00),
ID_BTN_CLOSE,
};
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
{ WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 0, 0, 480, 272, 0, 0x0, 0 },
{ BUTTON_CreateIndirect, "", ID_BTN_CLOSE, 460, 0, 20, 20, 0, 0, 0 },
};
static void _cbCloseButton(WM_MESSAGE * pMsg)
{
int Id;
GUI_RECT Rect;
switch (pMsg->MsgId)
{
case WM_PAINT:
Id = WM_GetId(pMsg->hWin);
WM_GetClientRect(&Rect);
switch (Id)
{
case ID_BTN_CLOSE:
GUI_SetColor(GUI_RED);
GUI_FillRectEx(&Rect);
GUI_SetColor(GUI_WHITE);
GUI_SetFont(GUI_FONT_16B_ASCII);
GUI_SetTextMode(GUI_TM_TRANS);
GUI_DispStringInRect("X", &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER);
break;
}
break;
default:
BUTTON_Callback(pMsg);
break;
}
}
static void _cbDialog(WM_MESSAGE * pMsg)
{
WM_HWIN hItem;
int NCode;
int Id;
static uint8_t Index = 0;
static uint8_t timer_count = 0;
char buf[10];
int16_t r = 120;
int16_t x, y;
int16_t x1, y1;
int16_t x2, y2;
float xs;
switch (pMsg->MsgId)
{
case WM_INIT_DIALOG:
hItem = WM_GetDialogItem(pMsg->hWin, ID_BTN_CLOSE);
WM_SetHasTrans(hItem);
WM_SetCallback(hItem, _cbCloseButton);
hTimer = WM_CreateTimer(pMsg->hWin, 0, 20, 0);
// GUI_MEMDEV_Select(0);
// hMem = GUI_MEMDEV_Create(0,0,280,210);
// GUI_MEMDEV_Select(hMem);
// GUI_SetBkColor(GUI_BLACK);
// GUI_ClearRect(0,0,GUI_MEMDEV_GetXSize(hMem) - 1,GUI_MEMDEV_GetYSize(hMem) - 1);
// GUI_EnableAlpha(1);
// GUI_AA_SetFactor(6);
// GUI_SetPenSize(1);
// for(uint8_t i = 0;i < 20;i ++)
// {
// GUI_SetAlpha(i * 12.5);
// GUI_SetColor(GUI_GREEN);
// GUI_AA_DrawArc(140,150,r - i - 1,r - i - 1,50,210);
// GUI_SetColor(GUI_ORANGE);
// GUI_AA_DrawArc(140,150,r - i - 1,r - i - 1,10,50);
// GUI_SetColor(GUI_RED);
// GUI_AA_DrawArc(140,150,r - i - 1,r - i - 1,-30,10);
// }
// GUI_SetAlpha(0);
break;
case WM_PAINT:
GUI_SetBkColor(GUI_BLACK);
GUI_ClearRect(0, 0, 479, 271);
GUI_SetColor(GUI_BLUE);
GUI_SetPenSize(1);
GUI_DrawRect(0, 0, 479, 271);
GUI_FillRect(0, 0, 479, 19);
GUI_SetColor(GUI_WHITE);
GUI_SetFont(GUI_FONT_16B_ASCII);
GUI_SetTextMode(GUI_TM_TRANS);
GUI_DispStringAt("yibiaopan", 2, 2);
GUI_EnableAlpha(1);
GUI_AA_SetFactor(6);
GUI_SetPenSize(4);
for (uint8_t i = 0; i < 20; i++)
{
GUI_SetAlpha(i * 12.5);
GUI_SetColor(GUI_GREEN);
GUI_AA_DrawArc(240, 195, r - i - 1, r - i - 1, 50, 210);
GUI_SetColor(GUI_ORANGE);
GUI_AA_DrawArc(240, 195, r - i - 1, r - i - 1, 10, 50);
GUI_SetColor(GUI_RED);
GUI_AA_DrawArc(240, 195, r - i - 1, r - i - 1, -30, 10);
}
GUI_SetAlpha(0);
//GUI_SetPenSize(20);
//GUI_SetColor(GUI_GREEN);
//GUI_AA_DrawArc(240,195,r - 10,r - 10,50,210);
//GUI_SetColor(GUI_ORANGE);
//GUI_AA_DrawArc(240,195,r - 10,r - 10,10,50);
//GUI_SetColor(GUI_RED);
//GUI_AA_DrawArc(240,195,r - 10,r - 10,-30,10);
// GUI_MEMDEV_WriteAt(hMem, 140, 45);
GUI_AA_SetFactor(6);
GUI_SetColor(GUI_WHITE);
GUI_SetPenSize(2);
GUI_AA_DrawArc(240, 195, r + 2, r + 2, -30, 210);
GUI_SetFont(GUI_FONT_16B_ASCII);
for (uint8_t i = 0; i <= 12; i++)
{
xs = cos((float)(i * 20 - 30) / 180 * 3.1415926);
x = xs * (r + 2) + 240.5;
x1 = xs * (r - (i % 2 ? 10 : 19)) + 240.5;
x2 = xs * (r - 28) + 240.5;
xs = sin((float)(i * 20 - 30) / 180 * 3.1415926);
y = 195.5 - xs * (r + 2);
y1 = 195.5 - xs * (r - (i % 2 ? 10 : 19));
y2 = 195.5 - xs * (r - 28);
GUI_AA_DrawLine(x, y, x1, y1);
if (i % 2 == 0)
{
sprintf(buf, "%d", (6 - i / 2));
GUI_DispStringAt(buf, x2 - 4, y2 - 8);
}
if (i == 12)
{
GUI_DispStringAt("rpm", x2 + 10, y2 - 8);
GUI_DispStringAt("x1000", x2 + 10, y2 + 10);
}
}
GUI_SetTextAlign(GUI_TA_HCENTER | GUI_TA_BOTTOM);
GUI_SetFont(GUI_FONT_D48);
GUI_DispStringAt("240", 240, 180);
hMem = GUI_MEMDEV_Create(0, 0, 120, 50);
GUI_MEMDEV_Select(hMem);
GUI_MEMDEV_Clear(hMem);
GUI_SetTextAlign(GUI_TA_HCENTER | GUI_TA_BOTTOM);
GUI_SetFont(GUI_FONT_D48);
GUI_SetColor(GUI_WHITE);
GUI_SetTextMode(GUI_TM_TRANS);
GUI_DispStringAt("240", 60, 49);
GUI_SetColor(GUI_BLACK);
for (uint8_t i = 0; i < 50; i++)
{
GUI_SetAlpha(i * 5);
GUI_DrawLine(0, i, 119, i);
}
GUI_SetAlpha(0);
//GUI_MEMDEV_Select(GUI_MEMDEV_GetWindowDevice(pMsg->hWin));
GUI_MEMDEV_Select(0);
// GUI_SelectLCD();
GUI_MEMDEV_WriteExAt(hMem, 180, 182, 1000, -500, 200);
//GUI_MEMDEV_CopyToLCDAt(hMem,180,180);
GUI_MEMDEV_Delete(hMem);
break;
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch (Id)
{
case ID_BTN_CLOSE:
switch (NCode)
{
case WM_NOTIFICATION_CLICKED:
break;
case WM_NOTIFICATION_RELEASED:
WM_DeleteTimer(hTimer);
WM_DeleteWindow(pMsg->hWin);
break;
}
break;
}
break;
case WM_TIMER:
WM_RestartTimer(pMsg->Data.v, 20);
break;
default:
WM_DefaultProc(pMsg);
break;
}
}
WM_HWIN CreateYibiaopanWindow(void);
WM_HWIN CreateYibiaopanWindow(void) {
WM_HWIN hWin;
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
return hWin;
}
void MainTask(void) {
GUI_Init();
//WM_SetCreateFlags(WM_CF_MEMDEV);
CreateYibiaopanWindow();
while (1) {
//
// If an animation has been created, process it
//
GUI_Delay(50);
}
}
|
|