前段时间在公司项目开发中,实现了一个轻量级的gdi的UI引擎。开发时本意就是为以后自己开发中小型游戏设计的,所以引擎的特点有三,轻便:没有大量的接口,都是实际开发中最常用到的;高效:使用了很多SSE2指令优化,浮点转整形优化及脏处理优化;易用:力争以几行语句实现诸如超链接,自绘按钮,异形窗体等常见应用。
眼下全自绘界面的应用越来越广,君不见最新发布的QQ2009,除了承载窗体所有控件均为自绘,感觉目前的趋势就是应用软件UI开发向游戏靠拢。但QQ2009的自绘效率MS不能使人满意,不信开一个聊天对话框,鼠标在上面一排动画按钮上快速晃动,CPU单核近满了吧,而同样的效果用这个引擎实现CPU不会超过3%。
目前主要功能如下:
1.各种图片格式加载和绘制,灰化,hsl变换,旋转缩放等各种图片特效。
2.文字和超链接,闪烁和渐隐渐现等各种文字特效。
3.自绘按钮。
4.异形窗体,各种窗体特效。
5.动画组件,图片的变形和变速移动等等。
6.滚动字幕
7.脏处理画布。
超链接实现演示:
ISonicString * pStr = GetSonicUI()->CreateString();
pStr->Format("/a='www.csdn.com'/一个超链接");
pStr->TextOut(hdc, 10, 10);
动画按钮实现演示:
ISonicImage * pImg = GetSonicUI()->CreateImage();
pImg->Load("C:\\button.bmp"); // 三态平铺图
ISonicString * pStr = GetSonicUI()->CreateString();
pStr->Format("/a, p=%d, ph=%d, pc=%d, animation=40/", pImg->GetObjectId(), pImg->GetObjectId(), pImg->GetObjectId());
pStr->TextOut(hdc, 10, 10); // 这是一个像QQ2009一样三态变化带有渐变过度效果的动画按钮哦
以下是效率演示,图中的卡片都在快速移动,画面刷新频率在每秒50帧左右,CPU占用基本为0:
希望大家试用、点评,积极给予意见,帮助我完善这个引擎,不胜感谢。
下载地址:http://zskof.download.csdn.net
详细说明:http://blog.csdn.net/zskof/archive/2008/12/11/3496343.aspx