软件界面图片提供者策略 - MiniFramework蝇量框架 - Winform框架
软件界面图片提供者策略 - MiniFramework蝇量框架 - Winform框架
目录
一、前言
MiniFramework 蝇量框架支持软件界面换肤功能,包括界面样式和图片,支持以下两种换肤方式:
- DevExpress 皮肤
- 软件界面的图片替换
DevExpress 皮肤
在主窗体的Toolbar上,添加一个 SkinRibbonGallery 组件,可以切换DevExpress 17种常用皮肤。
DevExpress 17种常用皮肤
在SkinRibbonGallery组件的GalleryItemClick事件内实现所有软件界面全局换皮肤功能,参考代码:
private void skinRibbonGallery_GalleryItemClick(object sender, GalleryItemClickEventArgs e)
{
string skin = e.Item.Tag.ToString();
//所有软件界面全局换皮肤功能
this.SetSkin(skin);
//保存DevExpress皮肤名称
UserConfig.Current.SkinName = skin;
UserConfig.Save();
}
软件界面的图片替换
当用户购买MiniFramework 蝇量框架软件产品,要开发属于自己的软件产品,因此需要替换掉 MiniFramework 相关所有图片、图标等内容,以及针对VS解决方案改名。
VS解决方案改名工具:
http://www.csframework.com/archive/1/arc-1-20180527-2397.htm
二、UIProvider - 软件界面图片提供者
通过图片提供者策略,即可实现一套软件支持不同的客户使用,不需要修改程序代码,比如替换图片、图标、公司名称、程序名称等信息。
UIProvider 图片提供者与 IUIProvider 策略接口的逻辑关系
三、IUIProvider接口
软件界面图片、图标替换策略接口(IUIProvider接口)。
/// <summary>
/// 软件界面图片提供者接口
/// </summary>
public interface IUIProvider
{
/// <summary>
/// 程序Logo图标
/// </summary>
Icon Logo { get; }
/// <summary>
/// 登录界面的背景图片
/// </summary>
Image LoginBackgroundImage { get; }
/// <summary>
/// 关于我们左侧的背景图片
/// </summary>
Image AboutFormLeftImage { get; }
/// <summary>
/// 技术支持二维码(作者二维码)
/// </summary>
Image BarcodeImage { get; }
/// <summary>
/// 主窗体工具条右侧的背景图片(大图)
/// </summary>
Image MainFormToolbarImageLarge { get; }
/// <summary>
/// 主窗体工具条右侧的背景图片(小图)
/// </summary>
Image MainFormToolbarImageSmall { get; }
/// <summary>
/// HOME首页的Banner背景图
/// </summary>
Image HomeBackgroundImage { get; }
/// <summary>
/// 程序名称
/// </summary>
string ProgramName { get; }
/// <summary>
/// 程序版本号
/// </summary>
string Version { get; }
}
四、MiniFrameworkUI 类 - 蝇量框架默认图片提供者
蝇量框架默认图片提供者。
/// <summary>
/// MiniFramework 蝇量框架默认图片提供者
/// </summary>
public class MiniFrameworkUI : UIProviderBase
{
public MiniFrameworkUI() { bulk = @"images\default\"; }
public override string ProgramName { get { return Globals.DEF_NAME; } }
public override string Version { get { return Globals.DEF_VERSION; } }
}
五、QifanUI 类 - 客户案例
客户案例:起帆物流TMS系统界面图片提供者。
/// <summary>
/// 起帆物流界面图片提供者
/// </summary>
public class QifanUI : UIProviderBase
{
public QifanUI() { bulk = @"images\qifan\"; }
public override string ProgramName { get { return Globals.DEF_NAME1; } }
public override string Version { get { return Globals.DEF_VERSION1; } }
}
六、初始化界面图片提供者
在 Program.cs 内初始化图片提供者:
//初始化界面图片提供者
UIProvider.Current = UIProvider.GetProvider(UserConfig.Current.UIProviderName);
七、UIProviderName - 图片提供者名称
CSFramework.Mini.Library.MiniFrameworkUI
蝇量框架默认图片策略。
CSFramework.Mini.Library.QifanUI
客户案例 - 起帆物流TMS系统图片提供者。
八、图片目录
图片提供者策略对应的图片目录,在 \Debug\images\ 根目录下。
default:蝇量框架的图片目录。
qifan:客户案例:起帆物流TMS系统的图片目录。
\CSFramework.MiniFramework\source\Debug\images\default
\CSFramework.MiniFramework\source\Debug\images\qifan
九、效果展示
登录界面
主界面(HOME首页)
关于我们