Skins

GoTo DevExpress学习系列文章

本主题解释如何将DevExpress主题/皮肤应用到应用程序中,如何允许用户在运行时在主题之间切换,如何自定义现有皮肤或创建自己的皮肤,等等。
WinForms订阅包括许多基本控件:按钮、复选框、表单、消息框、对话框、对话框等。
我们实现所有这些控件的一个主要原因是为了支持我们的主题。通过
的开发表达,您可以获得各种各样的外观和一个全面的控制库,以保证整个应用程序的可视化一致性。
要查看可用的主题/皮肤,请打开任何演示应用程序

How to Apply a Skin

Design Time

打开“项目设置”页面,并选择所需的WinForms主题。此页面在中不可用。网络的核心项目。将默认外观和感觉组件放在表单上,并使用其智能标签菜单,或在代码中指定所需的皮肤。

Runtime (In Code)

Call the UserLookAndFeel.SetSkinStyle method

using DevExpress.LookAndFeel;

// ...
UserLookAndFeel.Default.SetSkinStyle(SkinStyle.WXI);

How to Enable Bonus or Custom Skins

DevExpress皮肤主要分为两大类:Devess推荐的最新皮肤和存储在单独的库/包中的过时/主题皮肤。

  • 当您使用模板库创建项目或将任何控件放到表单上时,现代皮肤立即可用。如果您开始了一个空白项目,则需要添加开发表达。手动使用工具库(或安装DevExpress.Utils NuGet package)。为空白。NET核心(.NET 5)项目,安装DevExpress.Win.Design package.。
  • Outdated and thematic skins are stored in the DevExpress.BonusSkins library/NuGet package. These skins must be registered before you can apply them. To register bonus skins, check the corresponding setting on the Project Settings Page, or call the Register method on application startup:
namespace WindowsFormsApplication1 {
    static class Program {
        [STAThread]
        static void Main() {
            DevExpress.UserSkins.BonusSkins.Register();

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

After bonus skins are registered, you can apply them in the same manner you apply standard skins.

using DevExpress.LookAndFeel;

UserLookAndFeel.Default.SetSkinStyle(SkinStyle.Pumpkin);

How to Let Users Select Skins at Runtime

DevExpress WinForms订阅包括多个现成的栏项,允许您的用户在皮肤和皮肤调色板之间切换。您可以将这些项目添加到“工具栏窗体”和“流畅设计窗体”的工具栏、功能区和标题栏中。
在这里插入图片描述
下面的代码将皮肤图库选择器添加到“ribbonPageGroup2”组中。

using DevExpress.XtraBars;
// ...
SkinRibbonGalleryBarItem skinGallery = new SkinRibbonGalleryBarItem();
ribbonPageGroup2.ItemLinks.Add(skinGallery);

注意,如果您在代码中创建了下拉下载按钮项选择器,您需要调用初始下拉下载图片库方法来初始化此选择器的下拉列表。

using DevExpress.XtraBars;
using DevExpress.XtraBars.Helpers;
// Add the selector next to the standard "Close", "Maximize", and "Minimize"
// buttons of the Toolbar Form
SkinDropDownButtonItem skinSelector = new SkinDropDownButtonItem();
SkinHelper.InitDropDownSkinGallery(skinSelector);
skinSelector.Alignment = BarItemLinkAlignment.Right;
this.toolbarFormControl1.TitleItemLinks.Add(skinSelector);

若要重命名和/或更改这些标准皮肤选择器的项的图标,请处理皮肤帮助程序。创建SkinHelper.CreateGalleryItem 事件。

using DevExpress.XtraBars;
using DevExpress.XtraBars.Helpers;

SkinHelper.CreateGalleryItem += (s, e) => {
    if (e.ItemName.Equals("DevExpress Style")) {
        e.GalleryItem.Image = e.UseLargeIcons ? MyCustomLargeIcon : MyCustomSmallIcon;
        e.GalleryItem.HoverImage = MyCustomLargeIcon;
        e.GalleryItem.Caption = "Moonlight";
    }
};

How to: Add and Customize Toolbar Skin Selectors
How to: Add and Customize the Ribbon Skin List and Skin Gallery
How to: Build a Custom End-User Skin Selector

Skin Palettes

DevExpressWinForms皮肤可以在UI元素上绘制光栅或矢量图像。光栅蒙皮只有一个默认外观,而每个矢量蒙皮都附带一组选项板(样例)。用户可以选择调色板来修改当前皮肤的配色方案。下图显示了“Bezier”矢量皮肤附带的一些调色板。
在这里插入图片描述

可以使用与指定蒙皮相同的方式应用调色板:打开“ Project Settings Page”页面或调用 SetSkinStyle(SkinSvgPalette)重载。

using DevExpress.LookAndFeel;
// ...
UserLookAndFeel.Default.SetSkinStyle(SkinSvgPalette.Bezier.Tokyo);

Default App Mode (Light/Dark)

使用Windows窗体设置。TrackWindowsAppMode设置,指定应用程序在Windows操作系统中跟踪“默认应用程序模式”设置,并在“skin gallery.”中仅显示浅色或深色调色板。
以下示例演示如何启用TrackWindowsAppMode 设置:

static void Main() {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    WindowsFormsSettings.TrackWindowsAppMode = DevExpress.Utils.DefaultBoolean.True;
    Application.Run(new Form1());
}

Highlight Individual Controls

突出显示单个控件
您可以为各个DevExpress控件(例如SimpleButtons)设置自定义背景、边框和前景色。要执行此操作,请从控件访问设置。外观组。建议您使用DX颜色而不是系统颜色:这些颜色是从皮肤中检索的,当用户在运行时更改皮肤时会自动更新。

// Use DXSkinColors.FillColors for background colors
simpleButton1.Appearance.BackColor = DXSkinColors.FillColors.Danger;
// Use DXSkinColors.ForeColors for text colors
simpleButton1.Appearance.ForeColor = DXSkinColors.ForeColors.Warning;

Enable Skins for MDI Forms

启用MDI窗体的外观
在Program.Main()程序中调用EnableMdiFormSkins()方法

using System;
using System.Windows.Forms;
using DevExpress.XtraEditors;

namespace DXApplication14 {
    internal static class Program {
        [STAThread]
        static void Main() {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            WindowsFormsSettings.EnableMdiFormSkins();
            Application.Run(new Form1());
        }
    }
}

在这里插入图片描述

Examples and Best Practices

示例和最佳实践

  • 如何获取当前活动皮肤和调色板的名称
    Read values of the ActiveSkinName and ActiveSvgPaletteName properties.
var skinName = UserLookAndFeel.Default.ActiveSkinName;
var paletteName = UserLookAndFeel.Default.ActiveSvgPaletteName;
  • 如何识别在运行时更改的皮肤或调色板
    Handle the static UserLookAndFeel.StyleChanged event. This event raises every time a user applies a different skin or skin palette.
UserLookAndFeel.Default.StyleChanged += (s, e) => {
    // TODO
};
  • 如何在应用程序重新启动时重新应用最后一个活动皮肤
    Windows窗体应用程序设置功能允许您在客户端计算机上创建、存储和维护自定义应用程序和用户首选项。当应用程序重新启动时,您可以使用此功能保存和恢复活动皮肤和调色板。
    双击Visual Studio解决方案资源管理器中的“Settings.Settings”文件,然后创建两个String类型的条目。将两个条目的范围都设置为“用户”。当应用程序即将关闭时,请保存UserLookAndFeel的值。违约皮肤名称和用户外观。违约ActiveSvgPaletteName属性设置为“应用程序设置”。当应用程序启动时,读取这些保存的值并将它们传递给UserLookAndFeel。SetSkinStyle方法作为参数。
    在这里插入图片描述
private void SkinSwitch_FormClosed(object sender, FormClosedEventArgs e)
        {
            var settings = Properties.Settings.Default;
            settings.SkinName = UserLookAndFeel.Default.SkinName;
            settings.Palette = UserLookAndFeel.Default.ActiveSvgPaletteName;
            settings.CompactMode = UserLookAndFeel.Default.CompactUIModeForced;
            settings.Save();
        }
protected override void OnShown(EventArgs e) {
    base.OnShown(e);
    var settings = Properties.Settings.Default;
    if (!string.IsNullOrEmpty(settings.SkinName)) {
        if (settings.CompactMode)
            UserLookAndFeel.ForceCompactUIMode(true, false);
        if (!string.IsNullOrEmpty(settings.Palette))
            UserLookAndFeel.Default.SetSkinStyle(settings.SkinName, settings.Palette);
        else UserLookAndFeel.Default.SetSkinStyle(settings.SkinName, "DefaultSkinPalette");
    }
}

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值