Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获得与肤色背景相关的前景色?_C#_Winforms_Devexpress_Devexpress Windows Ui - Fatal编程技术网

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;
}