Cpper
C/C++高级工程师 Android高级软件工程师 IT集成工程师 音频工程师 熟悉c,c++,java,c#,py,js,asp等多种语言 程序猿
从2008年年底我就一直想设计一套基于OpenGL的游戏专用GUI系统出来
当然有人说现在不是有现成的吗?CEGUI...
使用这个当然没什么问题
但是觉得自己开发的游戏引擎还是配备一个套自行开发的GUI系统比较好(比如irr)
当然在下面使用若干子库(比如freetype,sigc++等等)还是没有问题的
也是从那个时候看了很多GUI系统,比如CEGUI,MyGUI,GLOOEY,UFO GUI,UI LIB 等等
之后我开始设计了一个套GUI系统但是感觉问题多多
一个主要的问题就是没有处理好事件

现在重新看UI系统
设计她的前置条件有
1.良好的字体渲染器
2.对象系列化
3.中文输入.
4.其它

UI系统应该包括的内容(个人感觉)
1.UI事件
2.UI工厂(或者管理器)
3.UI控件对象(按键,组合框等等)
4.UI边框(装饰器)
5.UI布局管理器
6.其它

故从盖莫引擎2.1.2版本起我会逐步加入新设计的GUI引擎

下面是我的开胃菜
GUI主题色
设置这个的目的是为了统一GUI控件颜色而不需要一个一个设计它
下面是实现很简单的!
class G_DLL_API UIThemeColor : public Object
{   
public:
    
//////////////////////////////////////////////////////// 
    
/// 获取默认主题色
    
////////////////////////////////////////////////////////
    static UIThemeColor GetDefaultTheme();
public:     
    
//////////////////////////////////////////////////////// 
    
/// 构造,析构主题色
    
////////////////////////////////////////////////////////
    UIThemeColor();
    UIThemeColor(
const Color &normal,const Color &disable,const Color &focus,const Color &tagged);
    UIThemeColor(UIThemeColor 
&theme);
    
~UIThemeColor(){}
    
    
//////////////////////////////////////////////////////// 
    
/// 使用默认主题色
    
////////////////////////////////////////////////////////    
    void UseDefaultTheme();
    
    
//////////////////////////////////////////////////////// 
    
/// 重新设置,获取主题色
    
////////////////////////////////////////////////////////    
    void SetThemeColor(const Color &normal,const Color &disable,const Color &focus,const Color &tagged); 
    
void GetThemeColor(Color &normal,Color &disable,Color &focus,Color &tagged);  
    
    
//////////////////////////////////////////////////////// 
    
/// 设置,获取主题正常色 
    
////////////////////////////////////////////////////////
    void  SetNormalColor(const Color &color){this->color[0= color;}
    Color GetNormalColor()
const{return color[0];}
    
    
//////////////////////////////////////////////////////// 
    
/// 设置,获取主题不可用色
    
////////////////////////////////////////////////////////
    void  SetDisableColor(const Color &color){this->color[1= color;}
    Color GetDisableColor()
const{return color[0];}
    
    
//////////////////////////////////////////////////////// 
    
/// 设置,获取主题聚焦颜色
    
////////////////////////////////////////////////////////
    void  SetFocusColor(const Color &color){this->color[2= color;}
    Color GetFocusColor()
const{return color[2];}
    
    
//////////////////////////////////////////////////////// 
    
/// 设置,获取主题(被选中的)颜色
    
////////////////////////////////////////////////////////
    void  SetTaggedColor(const Color &color){this->color[3= color;}
    Color GetTaggedColor()
const{return color[3];}
private:    
    
static UIThemeColor themecolor;
    
//! 当前保留一个空的颜色值
    static const int    themecolor_number = 5
    Color               color[themecolor_number];


然后每个控件包含一个主题色对象
(当前这里认为控件有4个状态.正常,禁止,聚焦,选中)

posted on 2010-04-21 18:46 ccsdu2009 阅读(1598) 评论(4)  编辑 收藏 引用 所属分类: Game引擎
Comments
  • # re: 盖莫游戏引擎2.1.2-GUI引擎设计概要-主题色
    陈梓瀚(vczh)
    Posted @ 2010-04-23 02:53
    我正在实现一个可以置换渲染器和窗口系统的GUI  回复  更多评论   
  • # re: 盖莫游戏引擎2.1.2-GUI引擎设计概要-主题色
    ccsdu2009
    Posted @ 2010-04-23 08:42
    @陈梓瀚(vczh)
    guichart!  回复  更多评论   
  • # re: 盖莫游戏引擎2.1.2-GUI引擎设计概要-主题色
    喜乐递
    Posted @ 2010-04-23 13:19
    空间撒到卡上的  回复  更多评论   
  • # re: 盖莫游戏引擎2.1.2-GUI引擎设计概要-主题色
    ccsdu2009
    Posted @ 2010-06-18 13:50
    这个内容废弃了
    将使用UIScheme!  回复  更多评论   

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理