当前位置: 首页 > news >正文

网站模板有哪些wordpress 评论显示头像

网站模板有哪些,wordpress 评论显示头像,南昌it培训机构,巩义网站建设1 项目需求 1.1 基于Tft 触摸屏实现一个自锁按键 1.2 按键在按下后背景色需要进行变化,以凸显当前按键状态(选中or 未选中) 1.3 按键选中时对某一gpio输出低电平,非选中时输出高电平 2 移植 ucgui UCGUI的文件数量很大&#x…

1 项目需求

1.1 基于Tft 触摸屏实现一个自锁按键

1.2 按键在按下后背景色需要进行变化,以凸显当前按键状态(选中or 未选中)

1.3 按键选中时对某一gpio输出低电平,非选中时输出高电平

2 移植 ucgui 

 UCGUI的文件数量很大,主要用到/Config 和 GUI两个文件夹下文件

        相关文件介绍如下:

ucgui files.png

    将Config和GUI下所有文件加入工程,MDK中新建工程需要划分好结构,这是UCGUI官方推荐的结构:

  

ucgui Project.png

        

        JPEG, MemDev , MultiLayer , Widget , Wm 这5 个文件夹的内容可以暂时不加入MDK工程。

因为这些文件起到的是扩展功能,在移植阶段可以先不添加,等到以后用到其中的功能时再选择添加。但是建议都添加进去,避免遇到各种无解问题。

      ConverMono , ConverColor ,Core ,Font 这四个目录下的文件是不用修改的。要修改的文件在LCDDriver ,Config 这两个目录下。

    LCDDriver 是LCD的驱动接口函数文件,需要将自己的LCD驱动函数提供给UCGUI调用。

    需要提供3个LCD底层驱动函数:

  • void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex)  LCD画点函数, 用指定颜色填充一个像素
  • unsigned int LCD_L0_GetPixelIndex(int x, int y)  LCD读取定点颜色函数,读取一个像素点的16位RGB颜色值

LCDDriver 下有三个文件, LCDDummy.c 、 LCDNull.c 和LCDWin.c。 这三个都是UCGUI LCD接口模板文件。功能一样,只是移植时修改的细节不一样。我们可以选用其中一个,稍作修改作为接口文件。以LCDDummy.c为例,需要把其中LCD_L0_SetPixelIndex、LCD_L0_GetPixelIndex接口函数基于自己开发板的进行实现。

详细移植参考

stm32 UCGUI 完美移植_基于stm32的ucgui移植手册-CSDN博客

考虑我使用的ucgui库不支持自锁按键的功能,分析源码后对源码进行了修改设计中通过GUI_GetKey()函数获取被按下的键值,通过按下键值在应用层进程自锁功能设计,调用按键背景颜色改变来实现按下后背景变化功能,想了解详细实现可下载源码进行分析

3 基于 GUIBuilder 设计ui交互

下载地址GUIBuilder下载地址  ucGUI模拟器资源-CSDN文库

3.1打开GUIBuilder,界面如下

3.2添加 window 窗体

3.3 添加3个 button按键,分别设置为button1、button2、button3

3.4 将以上ui设计导出为c文件,选择file 中save ,导出文件默认存储在GUIBuilder 当前软件目录下,名称为WindowDLG.c

3.5 WindowDLG.c文件内容如下

/*********************************************************************
*                                                                    *
*                SEGGER Microcontroller GmbH & Co. KG                *
*        Solutions for real time microcontroller applications        *
*                                                                    *
**********************************************************************
*                                                                    *
* C-file generated by:                                               *
*                                                                    *
*        GUI_Builder for emWin version 5.22                          *
*        Compiled Jul  4 2013, 15:16:01                              *
*        (c) 2013 Segger Microcontroller GmbH & Co. KG               *
*                                                                    *
**********************************************************************
*                                                                    *
*        Internet: www.segger.com  Support: support@segger.com       *
*                                                                    *
**********************************************************************
*/

// USER START (Optionally insert additional includes)
// USER END

#include "DIALOG.h"

/*********************************************************************
*
*       Defines
*
**********************************************************************
*/
#define ID_WINDOW_0        (GUI_ID_USER + 0x00)
#define ID_BUTTON_0        (GUI_ID_USER + 0x01)
#define ID_BUTTON_1        (GUI_ID_USER + 0x02)
#define ID_BUTTON_2        (GUI_ID_USER + 0x03)


// USER START (Optionally insert additional defines)
// USER END

/*********************************************************************
*
*       Static data
*
**********************************************************************
*/

// USER START (Optionally insert additional static data)
// USER END

/*********************************************************************
*
*       _aDialogCreate
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  { WINDOW_CreateIndirect, "Window", ID_WINDOW_0, -1, 1, 240, 320, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button1", ID_BUTTON_0, 25, 17, 181, 72, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button2", ID_BUTTON_1, 28, 125, 177, 74, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button3", ID_BUTTON_2, 26, 232, 179, 66, 0, 0x0, 0 },
  // USER START (Optionally insert additional widgets)
  // USER END
};

/*********************************************************************
*
*       Static code
*
**********************************************************************
*/

// USER START (Optionally insert additional static code)
// USER END

/*********************************************************************
*
*       _cbDialog
*/
static void _cbDialog(WM_MESSAGE * pMsg) {
  int NCode;
  int Id;
  // USER START (Optionally insert additional variables)
  // USER END

  switch (pMsg->MsgId) {
  case WM_NOTIFY_PARENT:
    Id    = WM_GetId(pMsg->hWinSrc);
    NCode = pMsg->Data.v;
    switch(Id) {
    case ID_BUTTON_0: // Notifications sent by 'Button1'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      case WM_NOTIFICATION_RELEASED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      // USER START (Optionally insert additional code for further notification handling)
      // USER END
      }
      break;
    case ID_BUTTON_1: // Notifications sent by 'Button2'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      case WM_NOTIFICATION_RELEASED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      // USER START (Optionally insert additional code for further notification handling)
      // USER END
      }
      break;
    case ID_BUTTON_2: // Notifications sent by 'Button3'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      case WM_NOTIFICATION_RELEASED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      // USER START (Optionally insert additional code for further notification handling)
      // USER END
      }
      break;
    // USER START (Optionally insert additional code for further Ids)
    // USER END
    }
    break;
  // USER START (Optionally insert additional message handling)
  // USER END
  default:
    WM_DefaultProc(pMsg);
    break;
  }
}

/*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       CreateWindow
*/
WM_HWIN CreateWindow(void);
WM_HWIN CreateWindow(void) {
  WM_HWIN hWin;

  hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
  return hWin;
}

// USER START (Optionally insert additional public code)
// USER END

/*************************** End of file ****************************/
 

考虑程序uggui库与GUIBuilder 导出的库有些兼容问题,先把源码中红色删除

static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  { WINDOW_CreateIndirect, "Window", ID_WINDOW_0, -1, 1, 240, 320, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button1", ID_BUTTON_0, 25, 17, 181, 72, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button2", ID_BUTTON_1, 28, 125, 177, 74, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button3", ID_BUTTON_2, 26, 232, 179, 66, 0, 0x0, 0 },
  // USER START (Optionally insert additional widgets)
  // USER END
};

3 移植GUIBuilder 导出的文件到工程项目中

在主程序中根据GUI_GetKey返回的当前被按下的键值进行自锁功能设计

比如,按下1次为选中,按下2两次为取消

对button1、button2、button3 进行逻辑互斥,只要一个按下其他都为取消

4 运行效果

4.1按下button1

4.2 按下button3

4.3 取消button3

5、 源码下载

基于stm32使用ucgui+GUIBuilder开发ui实例源码资源-CSDN文库

http://www.15wanjia.com/news/181272.html

相关文章:

  • 廊坊电商网站建设wordpress查看用户
  • 邵阳 网站开发 招聘网站建设推广渠道
  • 怎样管理一个俄语网站网站应用开发
  • 网站建设工作简介北京做企业网站
  • 网站吸引客户西安 企业网站建设
  • 视频制作网站素材九九9九九9视频在线观看
  • 网站开发工资一般多少郑州网站优化怎样做
  • 类似闲鱼网站怎么做网站盒子怎么做
  • 免费行情网站推荐手机网站自适应宽度
  • 帝国建站程序中国招标投标网
  • 网站什么内容四川省建设勘察设计网站
  • 专门做化妆的招聘网站南安seo教程
  • 怎么才能成功做网站怎么看国外设计网站
  • 怎么给网站做优化wordpress字体编辑器
  • 重庆工信部网站四川省住房和城乡建设厅网站官网
  • 租二级目录做网站做土地租赁买卖的网站有哪些
  • 深圳沙井公司网站建设html成品网页免费模板下载
  • 戏曲网站建设的可行性分析制作小程序难吗
  • 长春网站公司哪家好建宣传网站
  • 购买域名后怎么建网站医疗器械四大龙头企业
  • 品牌词类的网站怎么做优化友情链接有用吗
  • dlink nas做网站网络门户网站
  • 苏州外贸营销网站建设企业网站备案资料样本
  • 企业网站托管常见问题建立门户网站需要什么技术
  • 高端网站鉴赏龙华网站建设推广外包
  • 室内设计师之路网站现在做个app多少钱
  • 网站 先建设还是先等级保护备案建筑网站案例
  • dedecms做国外网站网店推广发展趋势
  • 网站开发教程视频青岛网站厉害的公司
  • 欢迎进入中国建设银行网站泰安网站建设报价