赞
踩
关于Duilib的换肤问题:
首先需要在xml文件中定义一个控件(一般是布局),下面代码的取名叫bg
<HorizontalLayout name="bg" bkimage="file='bg0.png' corner='600,200,1,1'" hole="true">
接下来在c++的事件代码中,对应的事件处理函数中加入如下代码就能实现换肤功能了:
- if (_tcsicmp(msg.pSender->GetName(), "bg") == 0)
- {
- CControlUI* background = m_PaintManager.FindControl("bg");
- if (background != NULL)
- {
- TCHAR szBuf[MAX_PATH] = {0};
- ++bk_image_index_;
- if (kBackgroundSkinImageCount < bk_image_index_)
- bk_image_index_ = 0;
-
- _stprintf_s(szBuf, MAX_PATH - 1, _T("file='bg%d.png' corner='600,200,1,1'"), bk_image_index_);
- //设置背景图片
- background->SetBkImage(szBuf);
- //换肤一般是需要用观察者模式,因为在一个系统的软件中
- //换肤的不仅仅是一个界面,而是一系列的界面,所以点击了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。