DirectUI界面编程(零)简介

有过Win32、MFC编程经验的朋友应该都知道,传统Windows应用中的按钮、编辑框等控件都是一个子窗口,操作系统通过窗口句柄来唯一标识该窗口。 使用Windows 标准控件创建用户界面,美化起来是相当困难的,例如我们需要使用一张位图作为按钮的背景,MFC应用需要以下几个步骤:

  • 1.继承CButton类。
  • 2.为按钮添加BS_OWNERDRAW样式。
  • 3.重写DrawItem函数,在该函数中调用绘图API进行按钮的绘制。

要对每一个控件都进行自绘工作量是相当大的,使用DirectUI结合目前市场上的界面库进行界面设计就简单多了。

DirectUI是相对于传统控件而言的一种新的界面设计技术,笔者看来DirectUI只是一种界面设计理念,即我们的按钮、编辑框等不再以窗口句柄的形式创建,而是在主窗口客户区的一个逻辑区域。

例如通过DirectUI思想创建的按钮,其实只是在主窗口中绘制的一张图片,当用户点击图片在该窗口中的区域时,我们就认为是该"按钮"的点击事件,为了使得按钮更加逼真,我们还可以在点击时绘制另一张按下状态的按钮图片。

目前基于DirectUI设计思想实现的界面库也是比较多的,而且很多都是免费或者开源的,下面介绍笔者比较喜欢的两款:

1.免费界面库SkinUI

官方网站:http://www.skinui.cn/index.htm
特点:逻辑与界面分离:支持xml文件进行窗口布局,更改界面布局文件,不影响程序功能,甚至不需重新编译。
炫彩换肤:SkinUI界面库具备一键换肤的功能,除了提供一套默认皮肤外,还可以自由配置多套系统皮肤。

官方Demo:
这里写图片描述

这里写图片描述

上面是使用SkinUI构建的360安全卫士和360压缩界面,效果还不错吧!

2.开源界面库Duilib

Duilib是一款基于DirectUI思想实现的一款开源界面库,支持xml界面布局,界面设计与业务逻辑分离,具有强大的事件处理机制。而且提供了一款所见即所得的界面编辑器UIDesigner。
这套界面源码最初托管在Google Code上。
项目地址:http://code.google.com/p/duilib/,基于众所周知的原因,目前最新的源码已经迁移到Github。
Github地址:https://github.com/duilib/duilib

下面我们来看看官方提供的Demo:
这里写图片描述

这里写图片描述

效果也还不错吧,开源的东西一向比较受到笔者的青睐,Duilib也是笔者想详细介绍的一款界面库,从下节开始我们一起学习这套界面库的使用方法。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
国内首个开源的Directui界面库,开放,共享,惠众,共赢,遵循bsd协议,可以免费用于商业项目,目前支持Windows 32 、Window CE、Mobile等平台。 著名界面duilib的升级版uilib,加入了之前没有的常用控件,比如树.时间等控件,大大加快了界面开发速度.金山卫士.qq等最初都采用自该directui界面库。 Common ......\DLL_Debug_2008 ......\..............\UiLib_d.dll ......\..............\UiLib_d.exp ......\..............\UiLib_d.lib ......\..............\uilib_d.idb ......\..............\uilib_d.pdb ......\DLL_Debug_201X ......\..............\UiLib_d.dll ......\..............\UiLib_d.exp ......\..............\UiLib_d.ilk ......\..............\UiLib_d.lib ......\..............\UiLib_d.pdb ......\DLL_Release_2008 ......\................\UiLib.dll ......\................\UiLib.exp ......\................\UiLib.lib ......\DLL_Release_201X ......\................\UiLib.dll ......\................\UiLib.exp ......\................\UiLib.lib ......\................\UiLib.pdb ......\Include ......\.......\Control ......\.......\.......\UIActiveX.h ......\.......\.......\UIAnimation.h ......\.......\.......\UIButton.h ......\.......\.......\UICalendar.h ......\.......\.......\UICheckBox.h ......\.......\.......\UICombo.h ......\.......\.......\UIComboBox.h ......\.......\.......\UIEdit.h ......\.......\.......\UIFadeButton.h ......\.......\.......\UIGifAnim.h ......\.......\.......\UILabel.h ......\.......\.......\UIList.h ......\.......\.......\UIMenu.h ......\.......\.......\UIOption.h ......\.......\.......\UIProgress.h ......\.......\.......\UIRichEdit.h ......\.......\.......\UIScrollBar.h ......\.......\.......\UISlider.h ......\.......\.......\UIText.h ......\.......\.......\UITreeView.h ......\.......\.......\UIWebBrowser.h ......\.......\Core ......\.......\....\UIBase.h ......\.......\....\UIContainer.h ......\.......\....\UIControl.h ......\.......\....\UIDefine.h ......\.......\....\UIDlgBuilder.h ......\.......\....\UIDxAnimation.h ......\.......\....\UIManager.h ......\.......\....\UIMarkup.h ......\.......\....\UIRender.h ......\.......\Layout ......\.......\......\UIChildLayout.h ......\.......\......\UIFrameLayout.h ......\.......\......\UIHorizontalLayout.h ......\.......\......\UILinearLayout.h ......\.......\......\UITabLayout.h ......\.......\......\UITileLayout.h ......\.......\......\UIVerticalLayout.h ......\.......\StdAfx.h ......\.......\UIlib.h ......\.......\UiLib ......\.......\.....\Control ......\.......\.....\.......\Calendar.h ......\.......\.....\.......\GifAnimUI.h ......\.......\.....\.......\ListCommonDefine.h ......\.......\.....\.......\UIActiveX.h ......\.......\.....\.......\UIAnimation.h ......\.......\.....\.......\UIButton.h ......\.......\.....\.......\UICalendar.h ......\.......\.....\.......\UICheckBox.h ......\.......\.....\.......\UICombo.h ......\.......\.....\.......\UIComboBox.h ......\.......\.....\.......\UIDateTime.h ......\.......\.....\.......\UIEdit.h ......\.......\.....\.......\UIFadeButton.h ......\.......\.....\.......\UIGifAnim.h ......\.......\.....\.......\UILabel.h ......\.......\.....\.......\UIList.h ......\.......\.....\.......\UIMenu.h ......\.......\.....\.......\UIOption.h ......\.......\.....\.......\UIProgress.h ......\.......\.....\.......\UIRichEdit.h ......\.......\.....\.......\UIScrollBar.h ......\.......\.....\.......\UISlider.h ......\.......\.....\.......\UIText.h ......\.......\.....\.......\UITreeView.h ......\.......\.....\.......\UIWebBrowser.h ......\.......\.....\Core ......\.......\.....\....\UIBase.h ......\.......\.....\....\UIContainer.h ......\.......\.....\....\UIControl.h ......\.......\.....\....\UIDefine.h ......\.......\.....\....\UIDlgBuilder.h ......\.......\.....\....\UIDxAnimation.h ......\.......\.....\....\UIManager.h

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值