如何获取与皮肤的BackColor 关联的ForeColor?
How to get the ForeColor associated with the BackColor of the skin?
当您将 SimpleButton.Appearance.BackColor
属性 设置为 DX Skin
颜色时(@Danger
、@Question
、@Success
、@Primary
或 @Info
,如图所示):
SimpleButton.Appearance.ForeColor
属性 在 运行 时使用适当的颜色进行评估(如果肤色太深,将使用 Color.White;如果肤色太亮,用Color.Black):
深@Success
:
浅色 @Success
:
如何获得在 运行 时间内评估的 ForeColor
?
我试过获得 SimpleButton.ForeColor
、SimpleButton.Appearance.ForeColor
和 SimpleButton.Appearance.GetForeColor(e.GraphicsCache)
(我试图在 CustomDraw
事件中获得这种颜色)但它总是 Color.Black
DevExpress.LookAndFeel.DXSkinColors.ForeColors.Information 属性 应该为 Information/Success 着色提供 ForeColor。
根据this implementation of the W3C standard, making some modifications per 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;
}
当您将 SimpleButton.Appearance.BackColor
属性 设置为 DX Skin
颜色时(@Danger
、@Question
、@Success
、@Primary
或 @Info
,如图所示):
SimpleButton.Appearance.ForeColor
属性 在 运行 时使用适当的颜色进行评估(如果肤色太深,将使用 Color.White;如果肤色太亮,用Color.Black):
深@Success
:
浅色 @Success
:
如何获得在 运行 时间内评估的 ForeColor
?
我试过获得 SimpleButton.ForeColor
、SimpleButton.Appearance.ForeColor
和 SimpleButton.Appearance.GetForeColor(e.GraphicsCache)
(我试图在 CustomDraw
事件中获得这种颜色)但它总是 Color.Black
DevExpress.LookAndFeel.DXSkinColors.ForeColors.Information 属性 应该为 Information/Success 着色提供 ForeColor。
根据this implementation of the W3C standard, making some modifications per 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;
}