Duilib 换肤

本文探讨了使用Duilib库进行界面换肤的方法。通过在XML文件中定义控件,如HorizontalLayout,并设置bkimage属性,配合C++事件代码中的特定函数,实现了动态改变控件背景图片,从而达到换肤效果。
摘要由CSDN通过智能技术生成

关于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);
				//换肤一般是需要用观察者模式,因为在一个系统的软件中
				//换肤的不仅仅是一个界面,而是一系列的界面,所以点击了
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值