如何将LinearGradientBrush值转换为字符串值或颜色值。我有一个返回LinearGradientBrush值的方法
private LinearGradientBrush SetBackground(string color1, string color2)
{
LinearGradientBrush brush = new LinearGradientBrush();
brush.StartPoint = new Point(0, 0);
brush.EndPoint = new Point(0, 1);
GradientStop gra1 = new GradientStop();
gra1.Color = (Color)ColorConverter.ConvertFromString(color1);
gra1.Offset = 1;
GradientStop gra2 = new GradientStop();
gra2.Color = (Color)ColorConverter.ConvertFromString(color2);
gra2.Offset = 0;
brush.GradientStops.Add(gra1);
brush.GradientStops.Add(gra2);
return brush;
}我需要把这个返回值转换成字符串类型或者十六进制值,比如"FFFF00“表示,可以吗?如果可以,怎么做?提前感谢
发布于 2013-08-20 13:58:19
一种相对简单的方法是将各种属性输出到一个字符串中。在这里使用brain编译器,但这不是很简单吗:
private string LinearGradientBrushToString(LinearGradientBrush brush)
{
StringBuilder output = new StringBuilder();
output.Append(brush.StartPoint.X + "," + brush.StartPoint.Y);
output.Append("|" + brush.EndPoint.X + "," + brush.EndPoint.Y);
foreach(GradientStop g in brush.GradientStops)
{
output.Append("|" + g.Offset + "," + ColorConverter.ConvertToString(g.Color));
}
return output.ToString();
}这应该输出一个字符串,该字符串的键属性已转换为字符串,并以竖线和逗号分隔的格式放置。使用String.Split()将其分解并再次创建画笔就足够简单了。
发布于 2016-03-10 01:37:39
听着..。颜色是单点纯色。线性渐变是颜色点的集合。这意味着,如果你想比较一个点和一个规则,你应该做一些转换或类似的事情。
public static class LinearGratientBrushExtensions
{
public static Color AverageColor(this LinearGradientBrush brush)
{
return brush.GradientStops[(int)Math.Round((double)((brush.GradientStops.Count() - 1) / 2), 0)].Color;
}
}提供的扩展方法使用简单的“中间点”方法,拾取颜色规则的中点并返回它。你必须选择你自己的算法来找到这个“中间点”。
https://stackoverflow.com/questions/18327639
复制相似问题