最近在使用emwin画界面时遇到一个问题,无法改变按钮的背景色,调用函数BUTTON_SetBkColor()没有作用,原因是按钮使用了3D皮肤,导致该函数失效了,解决方法如下:
第一种:
添加函数BUTTON_SetSkinClassic(hItem); 把按钮的皮肤变为经典形状,然后再使用BUTTON_SetBkColor()即可改变背景色;
第二种:
使用回调函数WM_SetCallback(hItem,cbfun),
void cbfun(WM_MESSAGE* pMsg)
{
GUI_RECT rect;
WM_HWIN hwin = pMsg->hWin;
switch(pMsg->MsgId)
{
case WM_PAINT:
WM_GetClientRect(&rect);
if(0==BUTTON_IsPressed(hwin))
{
GUI_SetBkColor(GUI_ORANGE);
GUI_SetColor(GUI_ORANGE);
GUI_AA_FillRoundedRect(rect.x0,rect.y0,rect.x1,rect.y1,5);
}
else
{
GUI_SetBkColor(GUI_ORANGE);
GUI_SetColor(GUI_ORANGE);
GUI_AA_FillRoundedRect(rect.x0,rect.y0,rect.x1,rect.y1,5);
}
GUI_SetColor(GUI_BLACK);
GUI_DispStringInRect("OK",&rect,GUI_TA_HCENTER|GUI_TA_VCENTER);
break;
default:
BUTTON_Callback(pMsg);
break;
}
}
亲测可用,有问题请留言。