DuiLib库

来源:互联网 发布:tf家族官网淘宝 编辑:程序博客网 时间:2024/05/02 03:00
DuiLib库 我们把它分为四个模块(核心,基础,控件,另外的库),当前有些也会把它分为5个模块(用户界面层,数据,事件处理,渲染模块,插件模块)

我们先讲下四个模块里包含了那些类
一.核心模块:UIMarkup(解析XML), CMarkupNode(节点),CRenderClip(渲染区域控制), CRenderEngine(渲染引擎), CPaintManagerUI(绘制管理者),IMessageFilterUI(消息处理),INotifyUI(监听者类),CDialogBuilder(UI构建者),IDialogBuilderCallback(用户自定义控件),CControlUI(控件), CDelegateBase(委托基类), CEventSource(事件源), CDelegate(委托), CDelegateStatic (静态委托)
二.基础模块:CPoint 点, CSize 宽高, CRect 矩形, CStdString 字符串, CWindowWind windows窗口, STRINCortID 资源ID, CStdStringMap 字符串map, CStdPtrArray 指针数组
三.控件模块:CEditUI 控件, CEditWnd 活跃窗口, CButtonUI 按钮控件, CLabelUI 标签控件, CScrollBarUI 滚动条控件, CSliderUI 滑块控件, CTextUI 文本控件, COptionUI 选项控件, CProgressUI 进度条控件, CTxtWinHost 文本窗口宿主, CRiochEditUI 富文本框控件, CActiveXUI ACtiveX组件, CActiveXWnd ActiveX窗口, CActiveXEnum 枚举ActiveX接口, CActiveXCtrl ActiveX容器, CComboWnd 活跃窗口, CComboUI Combo控件, CListBodyUI 列表体, IListCallBackUI 列表回调, IListOwnerUI 列表拥有者基类, IListUI 列表基类, CListUI 控件, CListHeaderUI 列表头, CListHeaderitemUI 列表头元素, IListitemUI 列表项基类, CListLabelElementUI 标签列表元素, CListTextElementUI 文本列表元素, CListContainerElementUI 器列表元素, IContainerUI 容器基类, CContainerUI 容器, CVerticalLayoutUI 纵向布局, CHorizontalLayoutUI 横向布局 CTileLayoutUI 平铺布局, CDialogLayoutUI 对话框容器, CTabLayoutUI 标签页容器。

四.其他库:XUzip 解压zip包, std_image 载入各种图像格式文件。

先讲一下核心模块里的类
1.CRenderClip 作用:渲染区域控制,设置在dc上绘制的区域,防止子控件绘制到父控件外侧(float属性控件除外)
函数:
GenerateClip() 产生一个剪切区域, hDC窗口句柄, rc区域, clip[out] 剪切区
GenerateRoundClip() 产生一个圆角剪切区域, hDC 窗口句柄, rcquyu, width 横向圆角弧度, height纵向圆角弧度, clip[out] 剪切区
UseOldClipBegin() 使用整个活跃区域作为剪切区, hDC窗口句柄, clip 剪切区
UseOldClipEnd() 使用当前控件有效区作为剪切区, hDC窗口句柄, clip剪切区
2.CRenderEngine 作用:渲染引擎
函数:
LoadImage() 加载位图
bitmap图像
type类型
mask隐蔽色
实现
1.读取文件,资源和zip包中图像文件数据到内存区,通过HIWORD(bitmap.m_lpstr)区别从资源中或文件中加载MAKEINTRESOURCE
2 创建DIB
3 通过stbi_koad_from_memory 加载数据文件并转化后复制到DIB中
4 返回TImageInfo结构

CRenderEngine 渲染引擎
LoadImage() 加载图像
bitmap 图像
type 类型
mask 隐蔽色
实现:
1 读取文件,资源和zip包中图像文件数据到内存, 通过HWORD(bitmap.m_lpstr)区别从资源中或文件中加载MAKEINTRESOURCE
2 创建DIB
3 通过stbi_load_from_memory加载数据文件并转化后复制到DIB中
4 返回TImageInfo结构

DrawImage() 绘制图像
hDC 设备句柄
hBitmap 位图句柄
rc 对象区域
rcPaint 绘制区域
rcBmpPart 位图区域
rcCorners 拉伸区域
alphaChannel alpha通道
uFade 透明度
hole 居中
xTiled 横向平铺
yTiled 纵向平铺
实现
1 CreateCompatibleDC 创建内存设备句柄
2 SelectObject 将位图选入内存设备句柄
3 AlphaBlend alpha混合
4 BitBlt 或者 StretchBlt 绘制到内存设备句柄
5 SelectObject 将老的位图选入内存设备句柄
6 DeleteDC 释放句柄
DrawImageString 标识字符串绘制图像
hDC 设备句柄
pManager 绘制管理者
rc 对象区域
rcPaint 绘制区域
pStrImage 标识字符串
pStrModify 标识字符串
实现:
1 分析标识字符串获取属性
2 获取图像数据
3 绘制图像
DrawColor 绘制颜色
hDC 设备句柄
rc 对象区域
color 颜色
实现
如果不需要alpha混合 则SetBkColor() ExtTextOut()
否则 创建一个大小的32位DIB
DrawGradient() 绘制渐变
hDC 设备句柄
rc 对象区域
dwFirst 颜色1
dwSecond 颜色2
bVertical 渐变方向 true垂直 false 水平
nStep 步长
实现:
1 渐变填充
2 alpha混合
DrawLine 绘制直线
DrawRect 绘制矩形
DrawRoundRect 绘制圆角矩形
DrawText 绘制文字
DrawHtmlText 绘制“mini-html”标识字符串
hDC设备句柄
pManager 绘制管理者
rc 对象区域
pstrText “mini-html” 标识字符串
dwTextColor 字符串类型
pLinks 产生链接效果的区域组
sLinks 产生链接效果的区域组数量
nLinkRects 产生链接效果的区域组数量
uStyle 类型
GenerateBitmap 产生一个BMP位图
pManager 绘制管理者
pControl 控制句柄
rc 对象区域

返回BMP句柄  


duilib动态链接库及导入库  http://download.csdn.net/download/gjt19910817/3940248

原文链接:http://www.tarenasz.com/bbs/threads/duilib%E5%BA%93.292/

原创粉丝点击