0

当我试图从六值中获取颜色时,我得到了 ArgumentOutOfRangeException 。

   public static SolidColorBrush GetColorFromHexa(string hexaColor)
    {
        return new SolidColorBrush(
            Color.FromArgb(
                Convert.ToByte(hexaColor.Substring(1, 2), 16),
                Convert.ToByte(hexaColor.Substring(3, 2), 16),
                Convert.ToByte(hexaColor.Substring(5, 2), 16),
                Convert.ToByte(hexaColor.Substring(7, 2), 16)
            )
        );
    }


  SolidColorBrush brush = GetColorFromHexa("#ADD8E6");
  border.Background = brush;

我是否遗漏了可能导致此问题的任何内容?

4

2 回答 2

2

看起来您的参数 #ADD8E6 缺少颜色组件之一。AD D8 E6 只是三个组件,而 ARGB 需要四个。第四个在哪里?因此在 Convert.ToByte(hexaColor.Substring(7, 2), 16) 行上抛出异常。

于 2012-09-24T10:29:33.933 回答
1

ArgumentOutOfRangeException -
startIndex plus length indicates a position not within this instance.

-or-

startIndex or length is less than zero -msdn

所以这是导致您的问题的原因,换句话说,值(最后一个是 7,2)超出了范围。

一些可能对您使用MSDN String.Substring 方法有帮助的示例

希望对你有帮助,祝你好运。

于 2012-09-24T10:27:46.913 回答