当 使用的图形库缺少button控件(如:EazyX) 或者 大量的button导致内存占用过高 时可以考虑用rectangle代替button。以下为个人思路,在各种GUI绘图中都可以进行参考。
分析button的功能:
一.鼠标移入改变颜色
二.点击事件
实现:
获取鼠标位置,当鼠标在 "button"内 则改变颜色 否则为原色
当 "button" 颜色在该GUI中唯一时 判断鼠标所在像素点是否匹配 是?改变颜色:原色
以上两者结合
当鼠标位于 "buttons" 那块儿时,才进行颜色判断
即:将界面分割成块,再进行判断(例如将颜色相同的"button"分隔开,适用于大多数情况)
注意:rectangle上有文字时,需要将文字"击穿"(鼠标位于文字上时,触发背后的rectangle的相关事件)
以上需要的方法:获取鼠标坐标,获取像素点颜色
点击事件,在以上方法的基础上增加 鼠标事件 ,其它事件实现方法同理。
当然,你可以用其它的控件来代替button