emwin 入門第三課 PC仿真設置界面背景

    在界面切換的時候,我們也可以對界面設置背景,使其看上去更加好看,比如我們在界面的窗口上顯示圖片,或者顯示各種顏色,使其看上去更加美觀。這個我們可以在窗口消息裏面處理。基於上一個界面切換的函數來繼續做。
    創造對話框的時候,就會產生一條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);
	}
}

因爲設置成背景透明的時候,按鈕邊框也沒了,就用畫橫線的方法畫出了按鈕的邊框,效果一樣的:這是效果圖,按鈕是透明的,可以看到背景。
當然,我覺得按鈕透明應該有其他方法的,但是沒找到,會的可以評論交流一下啊!!
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章