搜索
bottom↓
回复: 56

ucgui下制作漂亮按键

  [复制链接]

出25入84汤圆

发表于 2013-9-13 13:39:13 | 显示全部楼层 |阅读模式
最近学习ucgui,以前做界面都是贴图的。
现在想用gui做出如下风格的按键

按下的效果为

众所周知 ucgui的按键效果类似于xp以前的风格。
论坛里有位兄弟当时想把按键四周倒圆角,花费了很大力气。
经过一番周折将步骤分享给大家

1,用photoshop做出类似上面两组按键(弹起和按下)
2,用ucgui自带软件uC-GUI-BitmapConvert.exe转换两组位图
3,   
    hButton3 = BUTTON_Create(110,525,160,70, GUI_ID_OK, BUTTON_CF_SHOW);//创建按钮大小和位图大小一样460*70
    BUTTON_SetBitmap(hButton3, 0, &bmpatient_0);//设置弹起位图
    BUTTON_SetBitmap(hButton3, 1, &bmpatient_1);//设置按下位图
   这段代码很简单,但是做出来的效果如下:
(这个是相机拍摄的效果不好)
   能看出来,边框影响效果。
4,为了去掉边框我们将button.c中3d效果去掉
     /* Support for 3D effects */
    #ifndef   BUTTON_USE_3D
    #define BUTTON_USE_3D 0
    #endif
    效果如下:
   
    但是按下时会有白色背景闪烁并且有虚线边框聚焦,如图

    闪烁效果我没法捕捉,就是按下时会看到按键白色闪烁一下然后才是按下状态
4,解决闪烁:闪烁的原因是因为默认显示颜色为白色
    在button.c里
    /* Define colors */
    #ifndef   BUTTON_BKCOLOR0_DEFAULT
      #define BUTTON_BKCOLOR0_DEFAULT   0xAAAAAA//这个是弹起时的背景颜色
    #endif

    #ifndef   BUTTON_BKCOLOR1_DEFAULT
      #define BUTTON_BKCOLOR1_DEFAULT   GUI_WHITE//这个是按下时的背景颜色
    #endif
    这就是为什么会闪烁了
    我们可以这样设置(0x864B2E是按键的背景色)
    BUTTON_SetBkColor(hButton3, 0, 0x864B2E);//0代表弹起
    BUTTON_SetBkColor(hButton3, 1, 0x864B2E);//1代表按下
5,解决聚焦:有两种方式
   1>.BUTTON_SetState(hButton3,  BUTTON_STATE_PRESSED);
    直接设置状态为按下状态,这样就没有聚焦了。但是在初始化时,该按键会被设置为按下状态,需要在其后添加这一句
    BUTTON_SetPressed         (hButton3, 0);//初始状态正常还是按下
    这样就可以了。
   2>.BUTTON_SetFocusColor      (hButton3, CHUN_MENU);//将聚焦框颜色设为背景色就看不见聚焦效果了
     这下按键的谈起和释放都可以按照自己喜欢的风格做了。

现将button里函数说明分享下,说明书上很多都没,这是我一个个调试验证的。

GUI_COLOR        BUTTON_GetBkColor         (BUTTON_Handle hObj, unsigned int Index);//背景色,index=0 弹起背景 ;index=1按下背景
const GUI_BITMAP GUI_UNI_PTR * BUTTON_GetBitmap(BUTTON_Handle hObj,unsigned int Index);//取得位图数据index弹起和按下
const GUI_FONT GUI_UNI_PTR * BUTTON_GetFont(BUTTON_Handle hObj);//取得按键字体
void             BUTTON_GetText            (BUTTON_Handle hObj, char * pBuffer, int MaxLen);//取得按键字符串
GUI_COLOR        BUTTON_GetTextColor       (BUTTON_Handle hObj, unsigned int Index);//取得按键字符串颜色
unsigned         BUTTON_IsPressed          (BUTTON_Handle hObj);//检测按键是否按下
void             BUTTON_SetBitmap          (BUTTON_Handle hObj, unsigned int Index, const GUI_BITMAP * pBitmap);//设置位图,位图由uC-GUI-BitmapConvert.exe转换得到
void             BUTTON_SetBitmapEx        (BUTTON_Handle hObj, unsigned int Index, const GUI_BITMAP * pBitmap, int x, int y);//在相对buttonX,Y位置显示位图
void             BUTTON_SetBkColor         (BUTTON_Handle hObj, unsigned int Index, GUI_COLOR Color);//设置谈起和按下背景颜色
void             BUTTON_SetBMP             (BUTTON_Handle hObj, unsigned int Index, const void * pBitmap);//没调试出,不理解
void             BUTTON_SetBMPEx           (BUTTON_Handle hObj, unsigned int Index, const void * pBitmap, int x, int y);//没调试出,不理解
void             BUTTON_SetFont            (BUTTON_Handle hObj, const GUI_FONT GUI_UNI_PTR * pfont);//设置字体
void             BUTTON_SetState           (BUTTON_Handle hObj, int State);                                    /* Not to be doc. */
//设置聚焦还是按下
//#define BUTTON_STATE_FOCUS      WIDGET_STATE_FOCUS
//#define BUTTON_STATE_PRESSED    WIDGET_STATE_USER0

void             BUTTON_SetPressed         (BUTTON_Handle hObj, int State);//设置按键初始化状态:弹起0;按下1
GUI_COLOR        BUTTON_SetFocusColor      (BUTTON_Handle hObj, GUI_COLOR Color);//设置聚焦颜色
void             BUTTON_SetFocussable      (BUTTON_Handle hObj, int State);//没调试出,不理解
void             BUTTON_SetStreamedBitmap  (BUTTON_Handle hObj, unsigned int Index, const GUI_BITMAP_STREAM * pBitmap);//没调试出,不理解
void             BUTTON_SetStreamedBitmapEx(BUTTON_Handle hObj, unsigned int Index, const GUI_BITMAP_STREAM * pBitmap, int x, int y);//没调试出,不理解
void             BUTTON_SetText            (BUTTON_Handle hObj, const char* s);//添加字符串
void             BUTTON_SetTextAlign       (BUTTON_Handle hObj, int Align);//设置字符串对齐方式
void             BUTTON_SetTextColor       (BUTTON_Handle hObj, unsigned int Index, GUI_COLOR Color);//字符串颜色
void             BUTTON_SetSelfDrawEx      (BUTTON_Handle hObj, unsigned int Index, void (*pDraw)(void), int x, int y); /* Not to be doc. *///没调试出,不理解
void             BUTTON_SetSelfDraw        (BUTTON_Handle hObj, unsigned int Index, void (*pDraw)(void));               /* Not to be doc. *///没调试出,不理解
希望对大家有用,网上关于ucgui的资料不全。
还请高手给我说下我没调试出的函数式什么意思。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-9-13 15:57:15 | 显示全部楼层
传说中的:沙发。?

出0入0汤圆

发表于 2013-9-13 16:04:33 | 显示全部楼层
我一般都是先做图片,然后直接显示图片.
PS水平有多高,作出的GUI就有多漂亮.

出0入0汤圆

发表于 2013-9-13 16:08:18 | 显示全部楼层
高手

出130入20汤圆

发表于 2013-9-13 16:20:49 来自手机 | 显示全部楼层
这种效果感觉emwin可以实现嘛

出0入0汤圆

发表于 2013-9-13 16:21:02 | 显示全部楼层
官网有个文件的,教如何的设计用户控件,这里我传一下例子和文档



上面上传的那个例子的显示效果,这个只是个简单的实例,想做的漂亮点,需要下点功夫

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-9-13 16:22:59 | 显示全部楼层
挺漂亮的!~~~~~~~~~~~~

出0入0汤圆

发表于 2013-9-13 16:28:22 | 显示全部楼层
现在都流行扁平化了,这些光溜溜的效果都不流行了

出0入0汤圆

发表于 2013-9-13 16:34:55 | 显示全部楼层
啊哈  最喜欢这样的 文章  最近在弄 em win  学习下                                             

出0入0汤圆

发表于 2013-9-13 16:53:35 | 显示全部楼层
mark                       

出0入0汤圆

发表于 2013-9-13 16:54:00 | 显示全部楼层
大爱分享经验者

出0入4汤圆

发表于 2013-9-13 17:03:52 | 显示全部楼层
这是个好资料

出0入4汤圆

发表于 2013-9-13 17:26:44 | 显示全部楼层
楼主,顺便问下,这个问题遇到过吗
http://www.amobbs.com/thread-5541511-1-1.html

出25入84汤圆

 楼主| 发表于 2013-9-16 11:28:05 | 显示全部楼层
bbandpp 发表于 2013-9-13 17:26
楼主,顺便问下,这个问题遇到过吗
http://www.amobbs.com/thread-5541511-1-1.html

emwin我很想用 但据说只有arm芯片才可以 我用的是FPGA的软核nios  听有位大神说好像emwin不支持FPGA

出0入0汤圆

发表于 2013-9-16 12:48:14 来自手机 | 显示全部楼层
标记一下,看看

出0入0汤圆

发表于 2013-9-16 12:53:18 | 显示全部楼层
圆角按钮也不是很难实现,可以参考PICgui

出0入0汤圆

发表于 2014-1-16 10:20:43 | 显示全部楼层
学习下

出0入0汤圆

发表于 2014-1-20 13:01:03 | 显示全部楼层
MARK  

出0入0汤圆

发表于 2014-1-20 14:23:15 | 显示全部楼层
标记.学习学习.

出0入0汤圆

发表于 2014-2-3 17:50:27 | 显示全部楼层
谢谢。学习学习

出0入0汤圆

发表于 2014-2-3 23:42:10 | 显示全部楼层
大过年的,楼主无私奉献的精神值得学习啊。emwin的说明的确很多不全啊

出0入0汤圆

发表于 2014-2-4 11:51:01 | 显示全部楼层
哇,好帖

出0入0汤圆

发表于 2014-2-4 12:26:06 | 显示全部楼层
ark_hd_hero 发表于 2013-9-13 16:04
我一般都是先做图片,然后直接显示图片.
PS水平有多高,作出的GUI就有多漂亮.
...

说的很在理!UI基本上还是建立在图片元素上的,图片质量高了,UI也就漂亮,但是质量高了,带来的是加载速度慢,处理负担重的后果,不知道我说的对不……

出0入54汤圆

发表于 2014-2-23 13:15:12 | 显示全部楼层
forschumi 发表于 2014-2-4 12:26
说的很在理!UI基本上还是建立在图片元素上的,图片质量高了,UI也就漂亮,但是质量高了,带来的是加载速 ...

不至于,处理个按钮图片 加载个ui还说嫌慢是你CPU选择的不行。各有各外设。

出0入0汤圆

发表于 2014-3-4 19:56:59 | 显示全部楼层
mark~~~~~~~~~~~~~~~~~~~~~~

出0入0汤圆

发表于 2014-6-22 12:12:04 | 显示全部楼层
漂亮按键。。。。。。。。。。。

出0入0汤圆

发表于 2014-6-26 08:03:54 | 显示全部楼层
Mark................................

出0入0汤圆

发表于 2014-6-26 09:38:48 | 显示全部楼层
还是不错的效果

出0入0汤圆

发表于 2014-6-27 08:12:06 | 显示全部楼层
这个不错,我那学生有这水平就好了。

出0入0汤圆

发表于 2014-6-27 08:16:10 | 显示全部楼层
这个和VC里面差不多 要想靓 就得加载图片

出0入0汤圆

发表于 2014-7-4 09:43:31 | 显示全部楼层
MARK下~~~

出0入0汤圆

发表于 2014-7-4 13:15:51 | 显示全部楼层
ucgui下制作漂亮按键

出0入0汤圆

发表于 2014-8-15 10:51:20 | 显示全部楼层
学习下,正在研究自定义风格的WIDGET

出0入0汤圆

发表于 2014-8-29 15:30:35 | 显示全部楼层
顶一下,正打算学习呢

出0入0汤圆

发表于 2014-10-5 12:32:44 | 显示全部楼层
有源码修改起来方便,选GUI有源码才好,谢谢分享 做个标记

出0入0汤圆

发表于 2014-10-5 12:46:27 | 显示全部楼层
不错。学习一下。

出0入0汤圆

发表于 2014-10-5 17:59:39 | 显示全部楼层
不懂ps的人情何以堪啊!

出0入0汤圆

发表于 2014-10-5 18:21:52 | 显示全部楼层
看起来好羡慕啊。我还在ucos入门啊。

出0入0汤圆

发表于 2014-10-5 18:48:58 | 显示全部楼层
正学GUI呢。

出25入84汤圆

 楼主| 发表于 2014-10-5 23:34:10 | 显示全部楼层
liuzhe910422 发表于 2014-10-5 17:59
不懂ps的人情何以堪啊!

下载iphone 或者ipad的psd 直接打开照着用就好了

出0入0汤圆

发表于 2014-10-6 13:50:14 | 显示全部楼层
ps才是王道

出0入0汤圆

发表于 2014-10-15 22:14:34 | 显示全部楼层
学习学习!                                                                 

出0入0汤圆

发表于 2014-10-15 22:22:36 | 显示全部楼层
不错,高手

出0入0汤圆

发表于 2014-10-29 15:28:37 | 显示全部楼层
楼主是有心人

出0入0汤圆

发表于 2014-10-31 22:33:24 | 显示全部楼层
太好了,可以学习一下

出0入0汤圆

发表于 2014-11-1 10:51:29 | 显示全部楼层
还是有点麻烦

出0入0汤圆

发表于 2014-11-11 22:56:36 | 显示全部楼层
请教一下用资源链表创建按键的时候怎么显示位图呢

出0入0汤圆

发表于 2015-7-9 08:49:24 | 显示全部楼层
楼主,显示button_setbmp跟显示位图差不多,注意下格式,试问下button怎么让背景是透明的,不要凸起

出0入0汤圆

发表于 2015-7-30 16:06:24 | 显示全部楼层
正想学习,谢谢!

出0入0汤圆

发表于 2015-8-13 17:46:51 | 显示全部楼层
万能的WIDGET_SetSelfDraw

出25入84汤圆

 楼主| 发表于 2015-8-13 18:01:59 | 显示全部楼层
爺@龙行天下 发表于 2015-7-9 08:49
楼主,显示button_setbmp跟显示位图差不多,注意下格式,试问下button怎么让背景是透明的,不要凸起
...

这个ucgui已经办不到了 要考emwin

出0入0汤圆

发表于 2015-9-11 09:49:54 | 显示全部楼层
好东西,得mark下!

出0入0汤圆

发表于 2015-9-11 10:27:12 | 显示全部楼层
楼主发贴的板块不对。

出0入0汤圆

发表于 2015-9-11 14:18:33 | 显示全部楼层
学习下

出0入0汤圆

发表于 2015-9-11 17:23:29 | 显示全部楼层
确实感觉PS才是王道,万能钥匙

出0入0汤圆

发表于 2016-7-27 10:45:55 | 显示全部楼层
好资料,谢谢lz分享

出0入0汤圆

发表于 2017-7-8 17:42:04 | 显示全部楼层
谢谢,下载了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 20:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表