如何获得与皮肤的背景色相关的ForeColor?

时间:2019-11-06 23:07:56

标签: c# winforms devexpress devexpress-windows-ui

当您将SimpleButton.Appearance.BackColor属性设置为DX Skin颜色(@Danger@Question@Success@Primary或{{1} },如图所示):

Color selector

在运行时使用适当的颜色评估@Info属性(如果肤色太暗,则使用Color.White;如果肤色太亮,则使用Color.Black ):

黑暗SimpleButton.Appearance.ForeColor

Dark

浅色@Success

Light

如何获得在运行时评估的@Success

我尝试获取ForeColorSimpleButton.ForeColorSimpleButton.Appearance.ForeColor(我正在尝试在SimpleButton.Appearance.GetForeColor(e.GraphicsCache)事件中获取此颜色),但始终为CustomDraw

2 个答案:

答案 0 :(得分:1)

我最终根据this implementation of the W3C standard使用了这种扩展方法,并根据modifications的测试进行了一些Miral的测试:

public static Color GetContrastColor(this Color color)
{
    return (color.R * 0.299M) + (color.G * 0.587M) + (color.B * 0.114M) > 149 ? 
        Color.Black : 
        Color.White;
}

答案 1 :(得分:0)

DevExpress.LookAndFeel.DXSkinColors.ForeColors.Information属性应为信息/成功着色提供ForeColor。