一、基本介紹
emwin是一款嵌入式GUI軟件包,提供圖形化用戶界面設計和控制功能。emwin軟件包支持多種不同的顯示控制器,並具有優秀的可移植性,可以在多種嵌入式設備中使用。
emwin使用C語言編寫,具有可擴展性,而且擁有豐富的圖形界面元素和圖形效果,可以滿足絕大部分GUI應用的設計需求。emwin界面設計需要使用emwin的API函數進行實現。
二、基本操作
emwin的基本操作包括初始化、創建窗口、創建控件、設置控件屬性、顯示控件等。下面是emwin界面設計的一個基本示例代碼:
#include "GUI.h"
#include "DIALOG.h"
int main(void)
{
//初始化emwin
GUI_Init();
//創建窗口
WINDOW_Handle hWin = WINDOW_CreateEx(0, 0, 240, 320, WM_CF_SHOW, 0, 0);
//創建按鈕控件
BUTTON_Handle hButton = BUTTON_CreateEx(50, 120, 140, 60, hWin, WM_CF_SHOW, 0, 0);
//設置按鈕文字
BUTTON_SetText(hButton, "Hello, emwin!");
//顯示窗口
GUI_Delay(1000);
WINDOW_Delete(hWin);
return 0;
}
這段示例代碼實現了創建一個窗口和一個按鈕控件,並設置按鈕文字。除了按鈕控件,emwin還支持很多其它常用控件,如文本、列表、滑塊等。
三、控件屬性設置
emwin提供了許多API函數用於設置控件屬性,如設置背景色、字體、大小等等。下面是一個設置按鈕屬性的示例:
//設置按鈕背景色為紅色
BUTTON_SetBkColor(hButton, BUTTON_CI_UNPRESSED, GUI_RED);
//設置按鈕文字顏色為黃色
BUTTON_SetTextColor(hButton, BUTTON_CI_UNPRESSED, GUI_YELLOW);
//設置按鈕字體為宋體20號
GUI_SetFont(&GUI_Font20_SimSun);
這段代碼用於設置按鈕的背景色、文字顏色和字體。其中,BUTTON_CI_UNPRESSED為按鈕的未被按下狀態,GUI_RED和GUI_YELLOW分別為顏色值。
四、定時器和動畫效果
emwin還支持定時器和動畫效果。定時器可以用於定時更新界面、延時操作、計時等功能。動畫效果可以用於界面過渡、動態效果等。
下面是一個定時器和動畫效果的示例代碼:
//創建定時器
static void _cbTimer(WM_MESSAGE * pMsg)
{
int * pId = (int *)pMsg->Data.v;
switch (pMsg->MsgId)
{
case WM_INIT_DIALOG:
//啟動定時器
WM_CreateTimer(pMsg->hWin, 0, 10, 0);
break;
case WM_TIMER:
if (*pId hWin);
}
break;
default:
WM_DefaultProc(pMsg);
break;
}
}
//繪製動畫效果
static void _OnPaint(WM_HWIN hWin)
{
int yPos = WM_GetWindowSizeY(hWin) - 20;
GUI_ClearRect(0, 0, 240, 320);
GUI_SetColor(GUI_YELLOW);
GUI_FillRect(10, yPos - 100 + xPos / 10, 30, yPos - 80 + xPos / 10);
GUI_SetColor(GUI_RED);
GUI_FillRect(50, yPos - 80 - xPos / 10, 70, yPos - 60 - xPos / 10);
}
int main(void)
{
//初始化emwin
GUI_Init();
//創建窗口
WINDOW_Handle hWin = WINDOW_CreateEx(0, 0, 240, 320, WM_CF_SHOW, 0, 0);
//創建定時器
int id = 0;
WM_CreateWindowAsChild(50, 50, 100, 30, hWin, WM_CF_SHOW | WM_CF_MEMDEV, _cbTimer, sizeof(id));
//繪製動畫效果
while (1)
{
_OnPaint(hWin);
GUI_Delay(10);
if (++xPos > 390) xPos = 0;
}
WINDOW_Delete(hWin);
return 0;
}
這段代碼實現了一個在窗口中上下滑動的矩形,並通過定時器和動畫效果實現了矩形的動態移動。
五、小結
以上是emwin界面設計涉及的一些基本操作及示例代碼。當然,emwin還有很多其它豐富的功能和API函數。emwin界面設計需要綜合應用多種功能和API函數,以滿足不同GUI應用的設計需求。通過不斷學習和實踐,可以掌握emwin界面設計的方法和技巧,並實現理想的GUI應用程序。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/160536.html
微信掃一掃
支付寶掃一掃