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.
63 lines
2.0 KiB
63 lines
2.0 KiB
using System;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Media;
|
|
|
|
namespace HMIControl
|
|
{
|
|
public class HVLevelIndicator : HVIndicator
|
|
{
|
|
protected override void OnRender(DrawingContext drawingContext)
|
|
{
|
|
double scale;
|
|
double minimum = this.Minimum;
|
|
double maximum = this.Maximum;
|
|
double origin = base.Origin;
|
|
double value = base.Value;
|
|
Brush brush;
|
|
if (this.RenderModel == RenderModel.Simple)
|
|
{
|
|
brush = this.ControlBrush;
|
|
}
|
|
else
|
|
{
|
|
brush = ControlBrush.Color.CreateLinearThreeGradientsBrush(0.0, -30, 160);
|
|
}
|
|
if (value < minimum)
|
|
{
|
|
value = minimum;
|
|
}
|
|
else if (value > maximum)
|
|
{
|
|
value = maximum;
|
|
}
|
|
double num1 = 0.0;
|
|
double num2 = 0.0;
|
|
double actualWidth = base.ActualWidth;
|
|
double actualHeight = base.ActualHeight;
|
|
if (this.Orientation == Orientation.Vertical)
|
|
{
|
|
scale = base.ActualHeight / (maximum - minimum);
|
|
actualHeight = Math.Abs(value - origin) * scale;
|
|
num2 = base.ActualHeight - ((origin - minimum) * scale);
|
|
if (value > origin)
|
|
{
|
|
num2 -= actualHeight;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
scale = base.ActualWidth / (maximum - minimum);
|
|
actualWidth = Math.Abs(value - origin) * scale;
|
|
num1 = (origin - minimum) * scale;
|
|
if (value < origin)
|
|
{
|
|
num1 -= actualWidth;
|
|
}
|
|
}
|
|
drawingContext.DrawRectangle(base.Background, null, new Rect(new Size(base.ActualWidth, base.ActualHeight)));
|
|
drawingContext.DrawRectangle(brush, null, new Rect(num1, num2, actualWidth, actualHeight));
|
|
}
|
|
|
|
}
|
|
}
|
|
|