WPF SolidColorBrush 困境

发布于 2024-07-21 20:19:03 字数 243 浏览 3 评论 0原文

有谁知道如何将表示颜色的字符串转换为 WPF 中的 SolidColorBrush

例如:

string colorRed = "Red";
SolidColorBrush fromStringToColor = new SolidColorBrush(colorRed);

这就是我想要实现的目标。 有任何想法吗?

提前致谢。

Does anyone know how to convert a string that represents a color into a SolidColorBrush in WPF?

For e.g:

string colorRed = "Red";
SolidColorBrush fromStringToColor = new SolidColorBrush(colorRed);

That's sort of what I'm trying to accomplish.
Any ideas?

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

╭⌒浅淡时光〆 2024-07-28 20:19:03

您必须将字符串转换为 System.Windows.Media.Color,可以使用静态 ColorConverter.ConvertFromString 方法来完成此操作:

string colorRed = "Red";
Color c = (Color)ColorConverter.ConvertFromString(colorRed);
SolidColorBrush fromStringToColor = new SolidColorBrush(c);

You have to convert the string to a System.Windows.Media.Color, which you can do using the static ColorConverter.ConvertFromString method:

string colorRed = "Red";
Color c = (Color)ColorConverter.ConvertFromString(colorRed);
SolidColorBrush fromStringToColor = new SolidColorBrush(c);
彼岸花似海 2024-07-28 20:19:03
        private SolidColorBrush GetColorFromString(string color)
        {
            if (color.StartsWith("#"))
            {
                if (color.Length == 9)
                    return new SolidColorBrush(
                        Color.FromArgb(
                            Convert.ToByte(color.Substring(1, 2), 16),
                            Convert.ToByte(color.Substring(3, 2), 16),
                            Convert.ToByte(color.Substring(5, 2), 16),
                            Convert.ToByte(color.Substring(7, 2), 16)
                        )
                    );
                else
                    if (color.Length == 7)
                        return new SolidColorBrush(
                            Color.FromArgb(
                                0xff,
                                Convert.ToByte(color.Substring(1, 2), 16),
                                Convert.ToByte(color.Substring(3, 2), 16),
                                Convert.ToByte(color.Substring(5, 2), 16)

                            )
                        );
            }
            else
            {
                Type colorType = (typeof(System.Windows.Media.Colors));
                if (colorType.GetProperty(color) != null)
                {
                    object o = colorType.InvokeMember(color,
                    System.Reflection.BindingFlags.GetProperty, null, null, null); if (o != null)
                    {
                        return new SolidColorBrush((Color)o);
                    }
                }
            }
            return new SolidColorBrush(Colors.Transparent);

        }

SolidColorBrush c1 = GetColorFromString("Red");
SolidColorBrush c2 = GetColorFromString("#ffff0000");
SolidColorBrush c3 = GetColorFromString("#ff0000");
        private SolidColorBrush GetColorFromString(string color)
        {
            if (color.StartsWith("#"))
            {
                if (color.Length == 9)
                    return new SolidColorBrush(
                        Color.FromArgb(
                            Convert.ToByte(color.Substring(1, 2), 16),
                            Convert.ToByte(color.Substring(3, 2), 16),
                            Convert.ToByte(color.Substring(5, 2), 16),
                            Convert.ToByte(color.Substring(7, 2), 16)
                        )
                    );
                else
                    if (color.Length == 7)
                        return new SolidColorBrush(
                            Color.FromArgb(
                                0xff,
                                Convert.ToByte(color.Substring(1, 2), 16),
                                Convert.ToByte(color.Substring(3, 2), 16),
                                Convert.ToByte(color.Substring(5, 2), 16)

                            )
                        );
            }
            else
            {
                Type colorType = (typeof(System.Windows.Media.Colors));
                if (colorType.GetProperty(color) != null)
                {
                    object o = colorType.InvokeMember(color,
                    System.Reflection.BindingFlags.GetProperty, null, null, null); if (o != null)
                    {
                        return new SolidColorBrush((Color)o);
                    }
                }
            }
            return new SolidColorBrush(Colors.Transparent);

        }

SolidColorBrush c1 = GetColorFromString("Red");
SolidColorBrush c2 = GetColorFromString("#ffff0000");
SolidColorBrush c3 = GetColorFromString("#ff0000");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文