UIPro 一个DirectUI库

来源:互联网 发布:淘宝乐町代购是真的吗 编辑:程序博客网 时间:2024/05/22 16:44

UIPro 一个新的DirectUI库

先贴出一个使用UIPro开发的一个模仿QQ的界面效果:【不需要编写代码,只需要写xml文件即可,使用相对布局】


利用一些周末时间还有假期时间,写了一个DirectUI库,我取名为UIPro。

1. 整个工程是以工厂模式展开,UI Control都是windowless,非窗口模式。

2. 对库的编译控制,目前是通过宏开关进行的控制。

一:目前实现的基础UI控件如下:
1.static:
其实有两种static控件,第一种,可以根据字符串的长度自动出现滚动条(可以选择显不显实水平滚动条);另一种是simple static,不支持滚动条,支持font color标签
2.progress
3.combox:支持可编辑的和不可编辑模式
4.button: push/check box/radio box
5.gif
6.list:
支持列高度固定还有不固定;支持拖拽,单选/多选;大图标,小图标,列表,报表等样式。
7.tab
8.icon
9.slider
10.hyperlink
11.groupbox
12.tree 树控件
13.windowless rich edit:
占用资源少,效率高,可以实现的效果好。也实现了支持插入图片、gif等。
14.windowless flash control:
写了个ax window host支持flash控件的windowless模式,比如可以实现QQ魔法表情QQ秀
15.out look
16.menu:
不是自绘微软的menu,也不是hook微软的menu类,而是全新写的一个menu类,可以从xml中加载菜单。轻松实现带阴影透明的菜单效果,例如QQ主菜单等。
17.scrollbar
18.scrollpanel:
这个是一个辅助控件,如果一个控件想要得到滚动条的支持,做它的paneinner控件就行了
19.paneinner:与scrollpanel结合实现带滚动条的复合控件,用户只需要关心绘制,还有画布的大小,滚动由scrollpanel自动提供支持
20.ie: 实现了ax window host,用以支持 IOleCommandTarget,IDocHostShowUI,IDownloadManager,IInternetSecurityManager 等接口,可以对IE控件很好的控制,可以用来实现IE内核的浏览器哦。

基础控件就列举这么多,控件与控件的合用,可以实现一些较为复杂的控件。

二:自定义控件的能力:
用户可以自由实现自己的控件,只需要实现接口定义的函数即可。

三: com activex控件:
实现了CUIAxHostWindow类,该类提供com activex控件的基础host,例如该库中的flash,ie都是使用的CUIAxHostWindow;
接下来说说CUIAxWindowImpl类,这个是一个模板类,flash ie的窗体都是派生自该类,控件创建成功,自动安装事件的连接点。

四:多 UI引擎 的支持
因为都是接口依赖,只要实现了IUIEngine接口,都可以做为UIPro的UI引擎;第一版的UI引擎是gdi plus;以后会加入directx opengl等支持GPU硬加速的绘制引擎,成熟的第三方实现的开源2D、3D引擎库;使用者也可以实现自己的UI引擎。

五: rgn
提供了根据背景图片的透明度来裁剪RGN,实现圆角,异形窗口;还有内置的高效的美观的圆角rgn生成函数

六: UI 与 逻辑的分离
目前支持javascript、vbscript;
lua等待后续支持 


七: 自动排版

目前支持绝对布局和(类andriod的)相对布局

UIPro因完全采用DirectUI的方式,需要做的,就是处理图层,效果绚丽;稍加修改就能适用于触摸屏UI。


原创粉丝点击