硬汉嵌入式论坛

 找回密码
 立即注册
查看: 14671|回复: 9
收起左侧

[μCGUI] [求助]怎样创建不规则按钮?

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107198
QQ
发表于 2012-11-5 10:26:17 | 显示全部楼层 |阅读模式
转自:http://www.ucgui.net/bbs/dispbbs.asp?boardid=1&Id=2173
各位同志,我司要做个如下的界面,是经过美工美化过的,但ucgui创建的按钮都是方形的,
我要如何才能创建出如下的按钮呢?

200810417272688893.jpg
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107198
QQ
 楼主| 发表于 2012-11-5 10:27:29 | 显示全部楼层
这是现在实现的效果,按钮是方的,感觉不好
200810618475296121.jpg
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107198
QQ
 楼主| 发表于 2012-11-5 10:28:58 | 显示全部楼层
如果把按钮周围的3D效果的框去掉就OK了,请教版主要如何做呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107198
QQ
 楼主| 发表于 2012-11-5 10:29:53 | 显示全部楼层
把#define BUTTON_USE_3D 0就行了,但另外一个,在触摸屏按下选中了某个按钮的时候,怎样不让它的四周显示虚线框呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107198
QQ
 楼主| 发表于 2012-11-5 10:30:21 | 显示全部楼层
让FOCUS不显示就行了,哎,ucgui资料太少了,版主现在又不知道在做什么,好久没现身了。商业版本的又太贵了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107198
QQ
 楼主| 发表于 2012-11-5 10:38:12 | 显示全部楼层
对于不规则窗体,ucgui 并不支持,我记得 ucgui 有一个示例代码,演示一个园形按钮,但其实只
是自已在重载 WM_PAINT 消息时,将窗体背景绘制成与圆的,而且背景色与前景色一样,这样其实在
点的时候,园形外的区域点击,也是点击在按钮上。
        依我看,如果要实现你所的图中所描述的按钮,其实可以将图片按钮在绘制的时候,进行透明色
的处理就可以了,将不须要显示的区域处理成透明色,在显示位图的时候,处理一下透明色即可。
       按楼主图中来看,并没有处理好,对于图形化的按扭,应该处理的状态大约有:正常态、经过态、
按下态,都处理成图片,就不会有楼主在 focus 状态下的问题了,楼主须要自己重载按扭重绘。

另外:如果要从根本上实现控件的不规则,会大大提高空间的占用,一般情况下对于不规则的处理,其实
也是将其处理成小矩形的组合,沿着水平线,将区域划分成小矩形,最差的情况是每个矩形的高度为1,
即直线,之后在进行绘制的时候,按此区域进行剪切,并按些区域进行剪切的判断。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107198
QQ
 楼主| 发表于 2012-11-5 10:39:24 | 显示全部楼层
我也在做相同的东西显示关闭样式WIDGET_SetDefaultEffect_None();关闭FocusBUTTON_SetFocussable(hItem, 0);
BUTTON_USE_3D对于这个 我还没找到相关函数 升到WIDGET级别的所以现在就这么点了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107198
QQ
 楼主| 发表于 2012-11-5 10:39:43 | 显示全部楼层
我刚刚试过 这三个值改变后 完全可以了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107198
QQ
 楼主| 发表于 2012-11-5 10:41:25 | 显示全部楼层
我在一个有背景图片上创建了一个button,button也设置了释放和按下的图片,现在问题是:连续点button时,
可以明显感觉到button先刷了背景颜色(默认为灰白色),然后再贴图,这样给人的感觉button的图片会闪烁,
我跟踪程序发现是在button.c里面_Paint函数里做了
            /* Draw background */
          LCD_SetBkColor (pObj-&gtrops.aBkColor[ColorIndex]);
          LCD_SetColor   (pObj-&gtrops.aTextColor[ColorIndex]);
         WM_SetUserClipRect(&rInside);
         GUI_Clear();
这个动作,所以会看到这样的现象,请问有什么好的方法可以处理掉这种现象吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107198
QQ
 楼主| 发表于 2012-11-5 10:42:00 | 显示全部楼层
BUTTON_SetFocussable(hItem, 0); 这个怎么设置?
初学者,暂时还没能把button边框去掉
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-21 14:16 , Processed in 0.262790 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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