怎么实现按下PushButton按钮控件后,按钮有颜色变化



怎么实现按下PushButton按钮控件后,按钮有颜色变化。

详细点说就是按钮起先是黑色,我按下去时会瞬时变为白色然后又变成黑色。我的芯片是TI的M3 9B92,用的是Stellaris的图形库,然后我发现怎么在PushButton按钮控件自己的事件处理函数中无法重绘自己,无法设置填充色,求解释。

下面是我的按钮的属性设置和事件处理函数:

RectangularButton(g_sYes1, &g_sCleanSettingsEn, &g_sCleanSettingDisplayTime, &g_sNo1, &g_sKitronix320x240x16_SSD2119,
                  100, 160, 40, 30, PB_STYLE_TEXT | PB_STYLE_FILL , ClrMidnightBlue, 0, 0, ClrWhite,
                  FONT_STSONG20, g_pcYesUse, 0, 0,
                 0, 0, OnClick_Yes1EnterButton);

void
OnClick_Yes1EnterButton(tWidget *pWidget)
{
   PushButtonFillColorSet(&g_sYes1,ClrRed);
   WidgetPaint((tWidget *)(&g_sYes1));
 }

  • 要实现按钮按下显示不同颜色,需要做两个不同的按钮图片,分别用不同的颜色。
    按照如下定义按钮控件:
    #define CircularButton (sName,      // 控件名
    pParent,      // 父控件
    pNext,      // 下一个控件
    pChild,      // 子控件
    pDisplay,      // 显示设备对象
    lX,        // 控件X位置
    lY,        // 控件Y位置
    lR,        // 按钮半径
    ulStyle,      // 按钮风格
    ulFillColor,      // 按钮填充色
    ulPressFillColor,    // 按钮按下时填充色
    ulOutlineColor,    // 边框颜色
    ulTextColor,     // 文字颜色
    pFont,      // 字体
    pcText,      // 按钮文字
    pucImage,      // 按钮图片
    pucPressImage,    // 按钮按下图片
    usAutoRepeatDelay,  // 持续按下自动重复启动前延迟
    usAutoRepeatRate,   // 持续按下自动重复频率
    pfnOnClick)      // 点击按钮事件处理凼数

    红色部分分别定义按钮的图片和按钮按下时的图片。