C# 如何获得与肤色背景相关的前景色?
将C# 如何获得与肤色背景相关的前景色?,c#,winforms,devexpress,devexpress-windows-ui,C#,Winforms,Devexpress,Devexpress Windows Ui,将SimpleButton.Appearance.BackColor属性设置为DX皮肤颜色时(@Danger、@Question、@Success、@Primary或@Info如图所示): SimpleButton.Appearance.ForeColor属性在运行时使用适当的颜色进行评估(如果肤色太暗,将使用color.White;如果肤色太亮,将使用color.Black): 黑暗@Success: 灯光@Success: 如何获得在运行时评估的ForeColor 我已尝试获取Simp
SimpleButton.Appearance.BackColor
属性设置为DX皮肤
颜色时(@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属性应该为信息/成功着色提供ForeColor。我根据使用了此扩展方法,进行了一些per测试:
你说得对,这是背景色。对不起,我弄错了。这也是给我的绿色(与
背景色相同)
!您使用的是SVG皮肤/调色板还是位图GDI皮肤?在我的测试中,前颜色是绿色,只是比实际按钮的颜色浅一些。我使用的是带有叶子沙沙色托盘的Beziere皮肤,该托盘的SimpleButton
前颜色设置为color.White
(如问题中所述),但最终用户可以更改托盘。因此,如果用户选择高对比度白色托盘,则SimpleButton
ForeColor
将变为Color.Black
。我想得到黑色或白色的颜色取决于皮肤
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;
}