You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
168 lines
6.4 KiB
168 lines
6.4 KiB
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Windows;
|
|
using System.Windows.Data;
|
|
using System.Windows.Media;
|
|
|
|
namespace HMIControl
|
|
{
|
|
public static class HMIHelper
|
|
{
|
|
public static void BindToTemplatedParent(this FrameworkElement element, DependencyProperty target, DependencyProperty source)
|
|
{
|
|
Binding binding = new Binding
|
|
{
|
|
RelativeSource = RelativeSource.TemplatedParent,
|
|
Path = new PropertyPath(source)
|
|
};
|
|
element.SetBinding(target, binding);
|
|
}
|
|
|
|
public static Color AddColorDelta(this Color c, int delta)
|
|
{
|
|
int r = c.R + delta;
|
|
int g = c.G + delta;
|
|
int b = c.B + delta;
|
|
if (r < 0)
|
|
{
|
|
r = 0;
|
|
}
|
|
else if (r > 0xff)
|
|
{
|
|
r = 0xff;
|
|
}
|
|
if (g < 0)
|
|
{
|
|
g = 0;
|
|
}
|
|
else if (g > 0xff)
|
|
{
|
|
g = 0xff;
|
|
}
|
|
if (b < 0)
|
|
{
|
|
b = 0;
|
|
}
|
|
else if (b > 0xff)
|
|
{
|
|
b = 0xff;
|
|
}
|
|
return Color.FromArgb(c.A, (byte)r, (byte)g, (byte)b);
|
|
}
|
|
|
|
public static LinearGradientBrush CreateLinearTwoGradientsBrush(this Color color, double rotateAngle, int deltaA, int deltaB)
|
|
{
|
|
LinearGradientBrush brush = new LinearGradientBrush
|
|
{
|
|
StartPoint = new Point(0.0, 0.5),
|
|
EndPoint = new Point(1.0, 0.5),
|
|
GradientStops = new GradientStopCollection{
|
|
new GradientStop(AddColorDelta(color, deltaA), 0.0),
|
|
new GradientStop(AddColorDelta(color, deltaB), 1.0) }
|
|
};
|
|
if (rotateAngle != 0.0)
|
|
{
|
|
brush.RelativeTransform = new RotateTransform(rotateAngle, 0.5, 0.5);
|
|
}
|
|
return brush;
|
|
}
|
|
|
|
public static LinearGradientBrush CreateLinearGradientsBrush(this Color color, double offset)
|
|
{
|
|
return new LinearGradientBrush
|
|
{
|
|
GradientStops = { new GradientStop(color, 0) ,
|
|
new GradientStop(color.AddColorDelta(-80), offset) },
|
|
EndPoint = new Point(0.707, 0.707)
|
|
};
|
|
}
|
|
|
|
public static LinearGradientBrush CreateLinearGradientsBrush(this Color color, double rotateAngle, double offset, Color color2)
|
|
{
|
|
LinearGradientBrush brush = new LinearGradientBrush
|
|
{
|
|
StartPoint = new Point(0.0, 0.5),
|
|
EndPoint = new Point(1.0, 0.5),
|
|
GradientStops = new GradientStopCollection{
|
|
new GradientStop(color2, 0.0),
|
|
new GradientStop(color2, offset),
|
|
new GradientStop(color, 1.0) }
|
|
};
|
|
if (rotateAngle != 0.0)
|
|
{
|
|
brush.RelativeTransform = new RotateTransform(rotateAngle, 0.5, 0.5);
|
|
}
|
|
return brush;
|
|
}
|
|
|
|
public static LinearGradientBrush CreateLinearThreeGradientsBrush(this Color color, double rotateAngle, int deltaA, int deltaB)
|
|
{
|
|
Color color1 = AddColorDelta(color, deltaA);
|
|
Color color2 = AddColorDelta(color, deltaB);
|
|
LinearGradientBrush brush = new LinearGradientBrush
|
|
{
|
|
StartPoint = new Point(0.0, 0.5),
|
|
EndPoint = new Point(1.0, 0.5),
|
|
GradientStops = new GradientStopCollection { new GradientStop(color1, 0.0), new GradientStop(color2, 0.5), new GradientStop(color1, 1.0) }
|
|
};
|
|
if (rotateAngle != 0.0)
|
|
{
|
|
brush.RelativeTransform = new RotateTransform(rotateAngle, 0.5, 0.5);
|
|
}
|
|
return brush;
|
|
}
|
|
|
|
public static RadialGradientBrush CreateRadialTwoGradientBrush(this Color color, Transform relativeTransform, int deltaA)
|
|
{
|
|
RadialGradientBrush brush = new RadialGradientBrush(new GradientStopCollection { new GradientStop(color.AddColorDelta(deltaA), 0.0), new GradientStop(color, 1.0) });
|
|
brush.RelativeTransform = relativeTransform;
|
|
return brush;
|
|
}
|
|
|
|
public static RadialGradientBrush CreateRadialTwoGradientBrush(this Color color, Transform relativeTransform, int deltaA, int deltaB)
|
|
{
|
|
RadialGradientBrush brush = new RadialGradientBrush(new GradientStopCollection { new GradientStop(color.AddColorDelta(deltaA), 0.0), new GradientStop(color.AddColorDelta(deltaB), 1.0) });
|
|
brush.RelativeTransform = relativeTransform;
|
|
return brush;
|
|
}
|
|
|
|
public static RadialGradientBrush CreateRadialThreeGradientBrush(this Color color, Transform relativeTransform, int deltaA)
|
|
{
|
|
RadialGradientBrush brush = new RadialGradientBrush(new GradientStopCollection { new GradientStop(color, 0.0), new GradientStop(color.AddColorDelta(deltaA), 0.5), new GradientStop(color, 1.0) });
|
|
brush.RelativeTransform = relativeTransform;
|
|
return brush;
|
|
}
|
|
|
|
public static RadialGradientBrush CreateRadialThreeGradientBrush(this Color color, Transform relativeTransform, Color color2)
|
|
{
|
|
RadialGradientBrush brush = new RadialGradientBrush(new GradientStopCollection { new GradientStop(color2, 0.0), new GradientStop(color, 0.5), new GradientStop(color2, 1.0) });
|
|
brush.RelativeTransform = relativeTransform;
|
|
return brush;
|
|
}
|
|
|
|
public static int GetLength(this string words)
|
|
{
|
|
int len = 0;
|
|
var encodn = Encoding.GetEncoding(0);
|
|
for (int i = 0; i < words.Length; i++)
|
|
{
|
|
byte[] sarr = encodn.GetBytes(words.Substring(i, 1));
|
|
len += sarr.Length;
|
|
}
|
|
return len;
|
|
}
|
|
|
|
public static Dictionary<string, string> GetListFromText(this string text)
|
|
{
|
|
Dictionary<string, string> dict = new Dictionary<string, string>();
|
|
if (string.IsNullOrEmpty(text)) return dict;
|
|
string[] strs = text.Split('\\');
|
|
foreach (string str in strs)
|
|
{
|
|
int index = str.IndexOf(':');
|
|
if (index >= 0) dict.Add(str.Substring(0, index), str.Substring(index + 1));
|
|
}
|
|
return dict;
|
|
}
|
|
}
|
|
}
|
|
|