在界面切換的時候,我們也可以對界面設置背景,使其看上去更加好看,比如我們在界面的窗口上顯示圖片,或者顯示各種顏色,使其看上去更加美觀。這個我們可以在窗口消息裏面處理。基於上一個界面切換的函數來繼續做。
創造對話框的時候,就會產生一條WM_PAINT消息,這時候直接讓當前窗口顯示圖片即可達到效果。
在回調函數裏面插入wm_paint消息,然後顯示圖片:
因爲圖片生成的大小不一定剛好和當前窗口的大小匹配,所以我們可以對圖片進行放大或縮小處理,使其剛好覆蓋整個窗口。就可以用下面那個函數:
GUI_DrawBitmapEx(&bm1589960609737,0,0,200,100,1555,1600);
這個函數,手冊裏有詳細介紹,可以用來縮放圖片。第一個參數是圖片地址,第2到5個參數,這個例子裏的意思是圖片的第(200,100)的那個像素點顯示在窗口的(0,0,)點,後面兩個參數是按比例放大縮小,這個是X軸放大1.555倍,Y軸放大1.6倍。
加入好了之後效果就是這樣的:
如果其他界面也需要背景,就按這個在另一個窗口的回調函數裏面也設置一個背景顯示即可,當然,我們也可以把按鈕做成透明的,讓只有按鈕和按鈕框名字顯示就好。接下里,把這個按鈕做成透明的,這樣看上去效果更好。
這裏可以用回調函數來做,實測可以成功的。
首先,給按鈕加入回調函數
在回調函數裏面,需要對其進行設置:
回調函數的代碼:
static void _cbButton1(WM_MESSAGE * pMsg)
{
WM_HWIN hWin;
GUI_RECT Rect;
hWin = pMsg->hWin;
switch (pMsg->MsgId)
{
case WM_PAINT:
WM_GetClientRect(&Rect);
if (BUTTON_IsPressed(hWin)) //如果按下,按下後的狀態
{
GUI_SetColor(GUI_YELLOW);
GUI_FillRoundedRect(Rect.x0, Rect.y0, Rect.x1, Rect.y1, 0);
GUI_SetBkColor(GUI_DARKGRAY);
GUI_SetColor(GUI_BLUE);
}
else //沒有按下時的狀態
{
GUI_SetAlpha(255);
GUI_SetAlpha(0);
GUI_DrawLine(Rect.x0, Rect.y0, Rect.x1, Rect.y0);
GUI_DrawLine(Rect.x0, Rect.y0, Rect.x0, Rect.y1);
GUI_DrawLine(Rect.x0, Rect.y1, Rect.x1, Rect.y1);
GUI_DrawLine(Rect.x1, Rect.y0, Rect.x1, Rect.y1);
}
GUI_SetTextMode(GUI_TM_TRANS);
GUI_SetFont(&GUI_Font24_ASCII);
GUI_DispStringInRect("LED1", &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER);
break;
default:
BUTTON_Callback(pMsg);
}
}
因爲設置成背景透明的時候,按鈕邊框也沒了,就用畫橫線的方法畫出了按鈕的邊框,效果一樣的:這是效果圖,按鈕是透明的,可以看到背景。
當然,我覺得按鈕透明應該有其他方法的,但是沒找到,會的可以評論交流一下啊!!