zoukankan      html  css  js  c++  java
  • DevExpress WinForms使用教程:皮肤颜色和LookAndFeel

    v18.2版本中更改了控制背景颜色和皮肤一起处理的方式。在v18.1中引入了Project Settings页面,其中包含一个skin selector。这个机制取代了DefaultLookAndFeel组件的大多数用例。 对于许多应用来说,在全球范围内应用皮肤是一种可行的方法 - 它易于操作并且可以实现整体一致性。

    但是大多数单独的DevExpress WinForms控件有属于自己的LookAndFeel属性,这个属性已存在多年,这些属性启用外观和单个样式的每个控件配置。但这种机制可能会让新用户困惑,而且每个控件非常有用的用例很少。

    用于突出UI元素的颜色

    为什么要破坏设计一致性并覆盖单个控件的全局皮肤设置?据调查表明只有一个重要的场景:使用特殊颜色突出显示特定的UI元素。如果您出于本用例未涵盖的原因自定义控件LookAndFeel设置,可随时通过电子邮件联系开发团队:winformsteam@devexpress.com。

    在以前的版本中,没有直接的方法将高亮颜色应用于UI元素。自定义背景颜色仅在为控件关闭皮肤时使用,并且需要大量条件代码来调颜色和运行时的外观配置。

    v18.2中随处自定义颜色

    这是一个比较重大的更新:从v18.2开始,您现在可以应用自定义前景色和背景色,而无需停用外观。 为了清楚起见,这意味着即使LookAndFeel.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Skin – 这些设置组合被忽略。

    Skin-coordinated高亮颜色

    您现在可以为控件前景色和背景色选择特殊值,每个皮肤对其进行不同的解释。

    DevExpress WinForms使用教程

    有五种特殊颜色值:Primary, Info, Warning, Danger和Success,根据当前皮肤(和矢量皮肤的调色板),这些颜色使用不同的色调以保持与皮肤一致。通过将控件的颜色配置为这些特殊值,您可以轻松实现与当前肤色完美结合的控件突出显示外观。

    DevExpress WinForms使用教程

    例如,要实现此自定义编辑表单的外观,您可以选择Update按钮背景的皮肤信息和Cancel按钮的Danger。以下是不同Bezier调色板中这些设置的按钮外观图示。

    DevExpress WinForms使用教程

    当然,也可以从代码中分配皮肤:

    1
    2
    colId.AppearanceHeader.BackColor =
    DevExpress.LookAndFeel.DXSkinColors.FillColors.Question;

    您当前可以将皮肤特殊值指定为这些UI元素的背景:

    • Grid Control:Column和Band headers、LayoutView和CardView 卡片标题
    • Simple Button
    • Tabs
    • Group Control
    • Dock Panels
    • Layout Control groups
    • Tree List:Column和Band标题

    将在发布时提供对Pivot Grid列标题的支持。

    皮肤特殊值可用于前景色而没有限制。 但是建议不要同时将背景和前景色设置为肤色特殊值! 将此类值指定给背景颜色属性时,它们会自动更改相关的前景色调以提高可读性。

    DevExpress WinForms使用教程

    每个控件的LookAndFeel已弃用

    LookAndFeel随着v18.2中的更改,不再需要单个控件上的LookAndFeel属性。 它们现在仍然可用,但在编辑对话框中显示一条警告消息:

    DevExpress WinForms使用教程

    对于将来的版本,我们打算从design-time中隐藏属性。

    上面详述的更改存在一个潜在问题:您可能在过去配置了Appearance.BackColor属性,而LookAndFeel.Style设置为Skin。 这样的设置可以是用于look&feel配置的快速“tests”的剩余部分,或者是由于外观取代的先前UI样式。在这种情况下,将项目升级到v18.2后,您可能会看到意外的控件背景颜色。

    为了帮助您在项目中发现任何此类问题,我们扩展了本页描述的有关DirectX的诊断API。 对于许多情况,设置PaintApiDiagnosticsLevel.Throw模式会很有帮助,如下所示:

    1
    2
    DevExpress.XtraEditors.WindowsFormsSettings.ForcePaintApiDiagnostics(
    DevExpress.Utils.Diagnostics.PaintApiDiagnosticsLevel.Throw);

    因此,当控件呈现的背景颜色不是skinned颜色(即不是DevExpress.LookAndFeel.DXSkinColors.FillColors值)时,您将看到抛出异常。这是推荐的方法,因为它可以快速引导您使用自定义颜色的代码位置。

    或者如果您不喜欢处理许多单独的异常,您可以利用跟踪模式生成日志输出到文件或控制台:

    1
    2
    3
    4
    WindowsFormsSettings.ForcePaintApiDiagnostics(PaintApiDiagnosticsLevel.Trace,
    (apiLevel, api) => {
    Console.WriteLine(apiLevel.ToString() + ": " + api);
    });

    lambda表达式的api参数将包含一个类似AppearanceHeader.BackColor的字符串。 有了这些,您可以在代码中搜索每个相关属性的出现次数并评估其设置方式。


    DevExpress 2019全新出发,多套购买享更低优惠!

    扫描关注DevExpress中文网微信公众号,及时获取最新动态及最新资讯

    DevExpress中文网微信
  • 相关阅读:
    2019南昌网络赛-I(单调栈+线段树)
    poj3250(单调栈模板题)
    poj2528(线段树+离散化)
    poj2828(线段树查找序列第k小的值)
    Seikimatsu Occult Tonneru(网络流,状态数(建不建边)不多时,可考虑直接进行枚举
    A. Coffee Break(思维题,类似于邻接表的head数组用法)
    E. Paint the Tree(树形dp)
    cdq分治学习
    2018SEERC Points and Rectangles (CDQ分治)
    SEERC 2018 Inversion
  • 原文地址:https://www.cnblogs.com/AABBbaby/p/10570128.html
Copyright © 2011-2022 走看看