[C#] WPF - 如何生成随机颜色(Color)和随机画刷(Brush),Color如何转换成Brush?
2023-12-31 14:23:51
WPF中Color和Brush基本概念
WPF中的Color和Brush是两种不同的概念,它们之间的关系如下:
- Color表示一个颜色,由透明度、红、绿、蓝三个分量组成,每个分量的取值范围为0到255。在WPF中,可以使用
Color
类来表示颜色。 - Brush表示绘制对象时所用的画刷,它可以设置绘制的颜色、笔触、宽度等属性。在WPF中,可以使用
Brush
类来表示画刷。
需要注意的是,Color和Brush虽然有关系,但是它们的用途不同。Color主要用于表示颜色,而Brush主要用于设置绘制对象时的画刷属性。
Color结构体和Color.FromArgb,Color.FromRgb函数
函数原型如下:
public static Color FromArgb(byte alpha, byte red, byte green, byte blue);
public static Color FromRgb(byte red, byte green, byte blue);
其中,参数含义如下:
alpha
:透明度,取值范围为0到255。0表示完全透明,255表示完全不透明。red
:红色分量,取值范围为0到255。green
:绿色分量,取值范围为0到255。blue
:蓝色分量,取值范围为0到255。
函数返回一个Color类型的值,表示对应的颜色。如果传入的参数超出了取值范围,则会抛出ArgumentOutOfRangeException异常。
如何把字符串的颜色转换值成Color对象?
WPF中,可以使用ColorConverter
类将字符串转换为Color对象。以下是一个简单的示例:
private System.Windows.Media.Color? CreateColorFromStr(string colorStr = "#FF0000")
{
// 将颜色字符串转换为Color对象
System.Windows.Media.Color? color = (System.Windows.Media.ColorConverter.ConvertFromString(colorStr)) as System.Windows.Media.Color?;
// 输出Color对象的颜色值
Console.WriteLine("Color值:" + color?.ToString());
return color;
}
需要注意的是,如果颜色字符串的格式不正确,转换过程可能会失败。因此,在使用“ColorConverter.ConvertFromString(colorStr)) ”方法时,应该先检查字符串是否符合颜色格式的要求。
通过Color生成SolidColorBrush对象
Color对象转换为SolidColorBrush对象:
new SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 100, 100, 120));
Brushes类
预定义了大量的常用的SolidColorBrush对象,可以查看:?色彩知识,常用颜色色谱表 (360doc.com)
WPF组件和颜色相关的属性(比如background)一般都会被转成Brush对象(比如SolidColorBrush对象)
设置Canvas的background颜色:
设置Line的线条颜色:?
如何生成随机颜色(Color)和随机画刷(Brush)?
private System.Windows.Media.Color GetRandColor(int start = 0, int end = 256)
{
// 创建一个Random对象
Random random = new Random();
// 生成一个0到255之间的随机整数作为红色分量
byte red = Convert.ToByte(random.Next(start, end));
// 生成一个0到255之间的随机整数作为绿色分量
byte green = Convert.ToByte(random.Next(start, end));
// 生成一个0到255之间的随机整数作为蓝色分量
byte blue = Convert.ToByte(random.Next(start, end));
// 将RGB值转换为ARGB格式的颜色值
System.Windows.Media.Color color = System.Windows.Media.Color.FromArgb(255, red, green, blue);
return color;
}
private System.Windows.Media.Brush GetRandBrush(int start = 0, int end = 256)
{
return new System.Windows.Media.SolidColorBrush(CetRandColor(start, end));
}
文章来源:https://blog.csdn.net/u011775793/article/details/135283078
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!