QUI开始

No Comments

      一直想自己写套UI框架来练练笔,以便加深对这一块的了解。犹豫了将近半年的时间,今天总算是开工了。几个月前基于Xlib写了个小框架,刚刚能够跑起来,仅仅包含窗口管理和消息循环,没有任何控件支持和绘图支持。这一套框架底层架构基本沿用那里,只是从Xlib移植到Windows。

      关于名字,实在没啥好说的。我个人喜欢简单明了,尤其是容易记忆的名字,既然有GUI一说,那就稍微改改,叫“QUI“咯。Q和G有些类似,也是我名字拼音第一个字母。

      干一件事,总得有一个目标以及具体的规划,给QUI定的目标是一个兼容Windows和Linux(Xlib或基于它的Gtk再说吧,估计QT不大可能),Mac因为一时也不了解先不考虑,嵌入式平台暂不考虑,毕竟PC UI和嵌入式UI设计哲学还是有很大区别的。

      在图形渲染方面,本来是想用那个传说中极度牛B,Google推出来的Skia引擎,不过由于天生驽钝,加上网上关于Skia的资料还相对较少,硬是没有将它攻下来,所以就使用Agg将就一下了。

      对于外设,和普通的UI框架一致,支持鼠标和键盘,不过尽量考虑到未来可能加入其他输入设备的可能,例如比较流行的触摸屏设备。

      控件方面,全部自绘,不过保留对原生控件的接口支持(对其封装,使其看上去和自绘窗口一致)。窗口内部的全部绘图操作都通过绘图引擎Agg实现,不依赖于Gdi等平台相关的API支持。原则上不使用平台内置的控件,不过考虑到richedit、brower等控件相对复杂,自己实现显然不靠谱,所以通过原生控件接口封装使用。

      其他设计要求包括,皮肤支持和动态换肤、国际化和动态语言(如Lua)扩展。遗漏的再慢慢补充,具体的细节再通过开发日志来说明。

      无图不真相,贴个图先,该窗口包含一个控件,自绘了一个太阳光谱。

QQ截图未命名.bmp

Leave a Reply