-
Notifications
You must be signed in to change notification settings - Fork 830
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
按钮的 normalimage 怎么设置可以在按钮内居中显示? #53
Comments
dest 前两个值 你得设置 你设置成0,0 肯定在左上角开始绘制的 |
嗯嗯,是的。不过我想要的效果是自动居中显示,不用每次都计算一下按钮和图片的大小。 |
那需要使用Box组合下 |
@lovesnow 用 box 组合还需要处理鼠标消息,hover之类的。 在 Control::DrawImage 里加了:
在 ImageAttribute::ModifyAttribute 里加了:
|
可使用 ButtonBox,具有布局属性的控件盒子模型,参考:https://github.com/netease-im/NIM_Duilib_Framework/blob/master/docs/ControlBox/Other.md
|
@nmgwddj 还有处理 click 事件的时候,给 buttonbox 绑定的话,点击中间 control 就没有效果。 |
这些属于业务层面的问题,请根据您自己的需求定制业务代码就可以了,很多种方式都可以实现以上需求。您可以自己处理不同控件的不同事件、根据自己的需求做过滤。标准控件中没有这么复杂的实现,所以可能需要您自己来重写一些控件实现以上功能。 |
如果说 mouse消息事件能够向父传递 也可以解决这个问题 |
是啊,跟我之前提的一个问题很像。#49 |
我晚上看上, 看看能不能提交一个PR上来 |
辛苦了。其实给 normalimage 加上一个 dest_center 属性就可以解决 issue 的问题。 |
@nmgwddj 其实我感觉这个 issue 并不是业务代码啊,本身 normalimage 提供 dest 属性,可以设置画在按钮上的位置。那么提供图片总是画在按钮中间位置的属性也是合理的啊。 还有,类似 Windows 窗口管理,当点击一个窗口的时候,会先通知子窗口,如果子窗口处理了,父窗口相应函数不会被调用;如果子窗口没处理,调用父窗口相应的函数。这样是不是更合理一些呢? |
图片在中间的功能我们就不多赘述了,通过 ButtonBox 很方便的可以实现。关于控件事件捕获的问题,我们不如换个角度来考虑这个问题。类似的控件在什么交互场景下会用到呢? |
换另外一种场景来解决这个问题。使用 Button 控件,图片素材自身就是有周边透明区域的,给 Button 设置不同状态下的不同背景图片,这样也可以实现类似需求。这样就不存在事件被图片控件捕获的情况了。 |
@nmgwddj 比如我现在要实现的按钮,width=170,height=35,背景色不设置(跟随父Box),normalimage, hotimage, pushedimage 大小都是 25。当鼠标放到按钮上任意位置的时候,要改变 image 的状态。点击按钮任意位置也要产生 click 事件。 |
第一个透明区域那个好像有缩放问题,因为中间的小图标不能缩放。 |
用以上介绍的两种方案都可以实现你的需求。 |
@nmgwddj 对于 BottonBox 这种方法,感觉 ButtonBox 本身可能存在问题。因为 BottonBox 既是 Box 也是 Button,对于BottonBox 感觉应该是一个整体,所以内部控件元素也应该收到整个 BottonBox 的鼠标事件。 |
@01haike ButtonBox 作为一个既具有布局又有控件功能的盒子就是给大家提供想实现类似功能而开发的,UI 库提供基础,当然更细节个性化的功能是需要开发者定制开发的。在开发过程中很多事情是鱼和熊掌不能兼得的,这就要开发者甚至产品人员介入来一起协商,所以我们希望底层的实现更接口化,与业务高度结合后的 UI 实现可以在不断沉淀后抽象出接口提供开发者去实现更细节的功能。 |
这是我见过最推诿的回复。 背景图拉伸填充本身就是一个不合理的设计,需要辅助的属性以支持背景图的功能完整性。 |
感谢您的批评,我们会重新思考接下来对 duilib 的迭代事宜。 |
我尝试使用 dest,不能达到居中显示的效果。
xml 如下:
The text was updated successfully, but these errors were encountered: