DotNet 4.8.1 build of DotNetBar
This commit is contained in:
596
PROMS/DotNetBar Source Code/MicroCharts/LineMicroChart.cs
Normal file
596
PROMS/DotNetBar Source Code/MicroCharts/LineMicroChart.cs
Normal file
@@ -0,0 +1,596 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace DevComponents.DotNetBar.MicroCharts
|
||||
{
|
||||
internal class LineMicroChart : MicroChartBase
|
||||
{
|
||||
public override void CreateChart(MicroChartRenderInfo info)
|
||||
{
|
||||
Graphics graphics = info.Graphics;
|
||||
|
||||
int pointRadius = Dpi.Width(PointRadius);
|
||||
int chartHeight = info.ChartHeight - pointRadius * 2;
|
||||
int chartWidth = info.ChartWidth - pointRadius * 2;
|
||||
|
||||
int drawStep = (int)Math.Max(1, chartWidth / (Math.Max(1, info.DataPoints.Count - 1)));
|
||||
int dataStep = Math.Max(1, ((info.DataPoints.Count * drawStep) / chartWidth));
|
||||
if (info.DataPoints.Count <= 2) dataStep = 1;
|
||||
int x = pointRadius;
|
||||
double dataPointMinValue = info.DataPointMinValue;
|
||||
double dataPointMaxValue = info.DataPointMaxValue;
|
||||
|
||||
if (_MicroChartStyle.DrawZeroLine && dataPointMinValue > _MicroChartStyle.ZeroLineValue)
|
||||
dataPointMinValue = _MicroChartStyle.ZeroLineValue;
|
||||
if (_MicroChartStyle.DrawControlLine1)
|
||||
{
|
||||
if (dataPointMinValue > _MicroChartStyle.ControlLine1StartValue)
|
||||
dataPointMinValue = _MicroChartStyle.ControlLine1StartValue;
|
||||
if (dataPointMinValue > _MicroChartStyle.ControlLine1EndValue)
|
||||
dataPointMinValue = _MicroChartStyle.ControlLine1EndValue;
|
||||
if (dataPointMaxValue < _MicroChartStyle.ControlLine1StartValue)
|
||||
dataPointMaxValue = _MicroChartStyle.ControlLine1StartValue;
|
||||
if (dataPointMaxValue < _MicroChartStyle.ControlLine1EndValue)
|
||||
dataPointMaxValue = _MicroChartStyle.ControlLine1EndValue;
|
||||
}
|
||||
if (_MicroChartStyle.DrawControlLine2)
|
||||
{
|
||||
if (dataPointMinValue > _MicroChartStyle.ControlLine2StartValue)
|
||||
dataPointMinValue = _MicroChartStyle.ControlLine2StartValue;
|
||||
if (dataPointMinValue > _MicroChartStyle.ControlLine2EndValue)
|
||||
dataPointMinValue = _MicroChartStyle.ControlLine2EndValue;
|
||||
if (dataPointMaxValue < _MicroChartStyle.ControlLine2StartValue)
|
||||
dataPointMaxValue = _MicroChartStyle.ControlLine2StartValue;
|
||||
if (dataPointMaxValue < _MicroChartStyle.ControlLine2EndValue)
|
||||
dataPointMaxValue = _MicroChartStyle.ControlLine2EndValue;
|
||||
}
|
||||
|
||||
|
||||
double range = dataPointMaxValue - dataPointMinValue;
|
||||
if (range == 0) range = 1;
|
||||
|
||||
int totalPoints = (int)Math.Ceiling((double)info.DataPoints.Count / dataStep);
|
||||
Point[] chartPoints = new Point[totalPoints];
|
||||
MicroChartHotPoint[] microHotPoints = new MicroChartHotPoint[totalPoints];
|
||||
Point lowPoint = Point.Empty, highPoint = Point.Empty;
|
||||
int index = 0;
|
||||
for (int i = 0; i < info.DataPoints.Count; i += dataStep)
|
||||
{
|
||||
double value = info.DataPoints[i];
|
||||
Point p = new Point(x, (int)Math.Min((int)(chartHeight * (1 - (value - dataPointMinValue) / range)), chartHeight - 1) + pointRadius);
|
||||
if (lowPoint.IsEmpty && value == info.DataPointMinValue)
|
||||
lowPoint = p;
|
||||
else if (/*highPoint.IsEmpty &&*/ value == dataPointMaxValue)
|
||||
highPoint = p;
|
||||
|
||||
chartPoints[index] = p;
|
||||
microHotPoints[index] = new MicroChartHotPoint(GetHotPointBounds(p, info), new Rectangle(p.X - drawStep / 2, 0, drawStep, chartHeight), _MicroChartStyle.LineColor, value, index);
|
||||
index++;
|
||||
x += drawStep;
|
||||
if (x > chartWidth || i >= info.DataPoints.Count - dataStep * 2) x = chartWidth;
|
||||
}
|
||||
|
||||
if (_MicroChartStyle.DrawAverageLine && !_MicroChartStyle.AverageLineColor.IsEmpty)
|
||||
{
|
||||
using (Pen pen = new Pen(_MicroChartStyle.AverageLineColor, Dpi.Width1))
|
||||
graphics.DrawLine(pen, 0, chartHeight / 2, chartWidth, chartHeight / 2);
|
||||
}
|
||||
|
||||
//if (_MicroChartStyle.DrawTrendLine && !_MicroChartStyle.TrendLineColor.IsEmpty)
|
||||
//{
|
||||
// using (Pen pen = new Pen(_MicroChartStyle.TrendLineColor))
|
||||
// graphics.DrawLine(pen, 0, (int)(chartHeight * (1 - (info.TrendInfo.Start - dataPointMinValue) / range)),
|
||||
// chartWidth, (int)(chartHeight * (1 - (info.TrendInfo.End - dataPointMinValue) / range)));
|
||||
//}
|
||||
|
||||
if (_MicroChartStyle.DrawZeroLine && !_MicroChartStyle.ZeroLineColor.IsEmpty)
|
||||
{
|
||||
using (Pen pen = new Pen(_MicroChartStyle.ZeroLineColor, Dpi.Width1))
|
||||
{
|
||||
int y = Math.Min((int)(chartHeight * (1 - (_MicroChartStyle.ZeroLineValue - dataPointMinValue) / range)) + pointRadius, (chartHeight + pointRadius) - 1);
|
||||
if (y < 0) y = 0;
|
||||
graphics.DrawLine(pen, 0, y, chartWidth, y);
|
||||
}
|
||||
}
|
||||
|
||||
if (_MicroChartStyle.DrawControlLine1 && !_MicroChartStyle.ControlLine1Color.IsEmpty)
|
||||
{
|
||||
using (Pen pen = new Pen(_MicroChartStyle.ControlLine1Color, Dpi.Width1))
|
||||
{
|
||||
int y1 = Math.Min((int)(chartHeight * (1 - (_MicroChartStyle.ControlLine1StartValue - dataPointMinValue) / range)) + pointRadius, (chartHeight + pointRadius) - 1);
|
||||
if (y1 < 0) y1 = 0;
|
||||
int y2 = Math.Min((int)(chartHeight * (1 - (_MicroChartStyle.ControlLine1EndValue - dataPointMinValue) / range)) + pointRadius, (chartHeight + pointRadius) - 1);
|
||||
if (y2 < 0) y2 = 0;
|
||||
graphics.DrawLine(pen, 0, y1, chartWidth, y2);
|
||||
}
|
||||
}
|
||||
if (_MicroChartStyle.DrawControlLine2 && !_MicroChartStyle.ControlLine2Color.IsEmpty)
|
||||
{
|
||||
using (Pen pen = new Pen(_MicroChartStyle.ControlLine2Color, Dpi.Width1))
|
||||
{
|
||||
int y1 = Math.Min((int)(chartHeight * (1 - (_MicroChartStyle.ControlLine2StartValue - dataPointMinValue) / range)) + pointRadius, (chartHeight + pointRadius) - 1);
|
||||
if (y1 < 0) y1 = 0;
|
||||
int y2 = Math.Min((int)(chartHeight * (1 - (_MicroChartStyle.ControlLine2EndValue - dataPointMinValue) / range)) + pointRadius, (chartHeight + pointRadius) - 1);
|
||||
if (y2 < 0) y2 = 0;
|
||||
graphics.DrawLine(pen, 0, y1, chartWidth, y2);
|
||||
}
|
||||
}
|
||||
|
||||
if (chartPoints.Length > 1)
|
||||
{
|
||||
using (Pen pen = new Pen(_MicroChartStyle.LineColor, Dpi.Width1))
|
||||
graphics.DrawLines(pen, chartPoints);
|
||||
}
|
||||
|
||||
if (!lowPoint.IsEmpty && !_MicroChartStyle.LowPointColor.IsEmpty && chartPoints.Length > 0)
|
||||
{
|
||||
using (SolidBrush brush = new SolidBrush(_MicroChartStyle.LowPointColor))
|
||||
graphics.FillPolygon(brush, GetChartPointBounds(lowPoint));
|
||||
}
|
||||
|
||||
if (!highPoint.IsEmpty && !_MicroChartStyle.HighPointColor.IsEmpty && chartPoints.Length > 0)
|
||||
{
|
||||
using (SolidBrush brush = new SolidBrush(_MicroChartStyle.HighPointColor))
|
||||
graphics.FillPolygon(brush, GetChartPointBounds(highPoint));
|
||||
}
|
||||
|
||||
if (!_MicroChartStyle.FirstPointColor.IsEmpty && chartPoints.Length > 0)
|
||||
{
|
||||
using (SolidBrush brush = new SolidBrush(_MicroChartStyle.FirstPointColor))
|
||||
graphics.FillPolygon(brush, GetChartPointBounds(chartPoints[0]));
|
||||
}
|
||||
|
||||
if (!_MicroChartStyle.LastPointColor.IsEmpty && chartPoints.Length > 1)
|
||||
{
|
||||
using (SolidBrush brush = new SolidBrush(_MicroChartStyle.LastPointColor))
|
||||
graphics.FillPolygon(brush, GetChartPointBounds(chartPoints[chartPoints.Length - 1]));
|
||||
}
|
||||
|
||||
info.MicroChartHotPoints = microHotPoints;
|
||||
|
||||
}
|
||||
|
||||
private static int HotPointOffset
|
||||
{
|
||||
get { return Dpi.Width4; }
|
||||
}
|
||||
private Rectangle GetHotPointBounds(Point hotPoint, MicroChartRenderInfo info)
|
||||
{
|
||||
//Rectangle bounds = new Rectangle(Math.Min(info.ChartWidth - HotPointOffset * 2, Math.Max(-1, hotPoint.X - HotPointOffset)),
|
||||
// Math.Min(info.ChartHeight - HotPointOffset * 2, Math.Max(-1, hotPoint.Y - HotPointOffset)),
|
||||
// HotPointOffset * 2,
|
||||
// HotPointOffset * 2);
|
||||
Rectangle bounds = new Rectangle(hotPoint.X - HotPointOffset,
|
||||
hotPoint.Y - HotPointOffset,
|
||||
HotPointOffset * 2,
|
||||
HotPointOffset * 2);
|
||||
return bounds;
|
||||
}
|
||||
|
||||
private LineMicroChartStyle _MicroChartStyle;
|
||||
public LineMicroChartStyle Style
|
||||
{
|
||||
get { return _MicroChartStyle; }
|
||||
set { _MicroChartStyle = value; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Defines the style for the line micro chart.
|
||||
/// </summary>
|
||||
[System.ComponentModel.ToolboxItem(false), System.ComponentModel.DesignTimeVisible(false), TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))]
|
||||
public class LineMicroChartStyle
|
||||
{
|
||||
private Color _LineColor = Color.Black;
|
||||
/// <summary>
|
||||
/// Gets or sets the color of the chart line.
|
||||
/// </summary>
|
||||
[Category("Appearance"), Description("Indicates color of chart line .")]
|
||||
public Color LineColor
|
||||
{
|
||||
get { return _LineColor; }
|
||||
set { _LineColor = value; OnStyleChanged(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// Gets whether property should be serialized.
|
||||
/// </summary>
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public bool ShouldSerializeLineColor()
|
||||
{
|
||||
return _LineColor != Color.Black;
|
||||
}
|
||||
/// <summary>
|
||||
/// Resets property to its default value.
|
||||
/// </summary>
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public void ResetLineColor()
|
||||
{
|
||||
this.LineColor = Color.Black;
|
||||
}
|
||||
|
||||
private bool _DrawAverageLine = false;
|
||||
/// <summary>
|
||||
/// Gets or sets whether average line is drawn.
|
||||
/// </summary>
|
||||
[DefaultValue(false), Category("Appearance")]
|
||||
public bool DrawAverageLine
|
||||
{
|
||||
get { return _DrawAverageLine; }
|
||||
set
|
||||
{
|
||||
_DrawAverageLine = value;
|
||||
OnStyleChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private Color _AverageLineColor = ColorScheme.GetColor(0xFAC08F);
|
||||
/// <summary>
|
||||
/// Gets or sets the color of the
|
||||
/// </summary>
|
||||
[Category("Columns"), Description("Indicates color of.")]
|
||||
public Color AverageLineColor
|
||||
{
|
||||
get { return _AverageLineColor; }
|
||||
set { _AverageLineColor = value; OnStyleChanged(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// Gets whether property should be serialized.
|
||||
/// </summary>
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public bool ShouldSerializeAverageLineColor()
|
||||
{
|
||||
return _AverageLineColor != ColorScheme.GetColor(0xFAC08F);
|
||||
}
|
||||
/// <summary>
|
||||
/// Resets property to its default value.
|
||||
/// </summary>
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public void ResetAverageLineColor()
|
||||
{
|
||||
this.AverageLineColor = ColorScheme.GetColor(0xFAC08F);
|
||||
}
|
||||
|
||||
//private bool _DrawTrendLine = false;
|
||||
//[DefaultValue(false), Category("Appearance")]
|
||||
//public bool DrawTrendLine
|
||||
//{
|
||||
// get { return _DrawTrendLine; }
|
||||
// set
|
||||
// {
|
||||
// _DrawTrendLine = value;
|
||||
// }
|
||||
//}
|
||||
|
||||
//private Color _TrendLineColor = ColorScheme.GetColor(0xBFBFBF);
|
||||
///// <summary>
|
||||
///// Gets or sets the color of the trend line.
|
||||
///// </summary>
|
||||
//[Category("Columns"), Description("Indicates color of trend line.")]
|
||||
//public Color TrendLineColor
|
||||
//{
|
||||
// get { return _TrendLineColor; }
|
||||
// set { _TrendLineColor = value; }
|
||||
//}
|
||||
///// <summary>
|
||||
///// Gets whether property should be serialized.
|
||||
///// </summary>
|
||||
//[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
//public bool ShouldSerializeTrendLineColor()
|
||||
//{
|
||||
// return !_TrendLineColor.IsEmpty;
|
||||
//}
|
||||
///// <summary>
|
||||
///// Resets property to its default value.
|
||||
///// </summary>
|
||||
//[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
//public void ResetTrendLineColor()
|
||||
//{
|
||||
// this.TrendLineColor = Color.Empty;
|
||||
//}
|
||||
|
||||
private bool _DrawZeroLine = true;
|
||||
/// <summary>
|
||||
/// Gets or sets whether zero-line is drawn on chart.
|
||||
/// </summary>
|
||||
[DefaultValue(true), Category("Appearance"), Description("Gets or sets whether zero-line is drawn on chart.")]
|
||||
public bool DrawZeroLine
|
||||
{
|
||||
get { return _DrawZeroLine; }
|
||||
set
|
||||
{
|
||||
_DrawZeroLine = value;
|
||||
OnStyleChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private double _ZeroLineValue = 0d;
|
||||
/// <summary>
|
||||
/// Gets or sets the value of the zero line, i.e. where zero line is drawn. Default value is 0.
|
||||
/// </summary>
|
||||
[DefaultValue(0d), Category("Appearance"), Description("Indicates value of the zero line, i.e. where zero line is drawn.")]
|
||||
public double ZeroLineValue
|
||||
{
|
||||
get { return _ZeroLineValue; }
|
||||
set
|
||||
{
|
||||
_ZeroLineValue = value;
|
||||
OnStyleChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private Color _ZeroLineColor = Color.Red;
|
||||
/// <summary>
|
||||
/// Gets or sets the color of the
|
||||
/// </summary>
|
||||
[Category("Columns"), Description("Indicates color of.")]
|
||||
public Color ZeroLineColor
|
||||
{
|
||||
get { return _ZeroLineColor; }
|
||||
set { _ZeroLineColor = value; OnStyleChanged(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// Gets whether property should be serialized.
|
||||
/// </summary>
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public bool ShouldSerializeZeroLineColor()
|
||||
{
|
||||
return _ZeroLineColor != Color.Red;
|
||||
}
|
||||
/// <summary>
|
||||
/// Resets property to its default value.
|
||||
/// </summary>
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public void ResetZeroLineColor()
|
||||
{
|
||||
this.ZeroLineColor = Color.Red;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Occurs when style appearance changes.
|
||||
/// </summary>
|
||||
public event EventHandler StyleChanged;
|
||||
/// <summary>
|
||||
/// Raises StyleChanged event.
|
||||
/// </summary>
|
||||
/// <param name="e">Provides event arguments.</param>
|
||||
protected virtual void OnStyleChanged(EventArgs e)
|
||||
{
|
||||
EventHandler handler = StyleChanged;
|
||||
if (handler != null)
|
||||
handler(this, e);
|
||||
}
|
||||
private void OnStyleChanged()
|
||||
{
|
||||
OnStyleChanged(EventArgs.Empty);
|
||||
}
|
||||
|
||||
private Color _HighPointColor = Color.Empty;
|
||||
/// <summary>
|
||||
/// Gets or sets the color of the high point dot on chart.
|
||||
/// </summary>
|
||||
[Category("Columns"), Description("Indicates color of high point dot on chart..")]
|
||||
public Color HighPointColor
|
||||
{
|
||||
get { return _HighPointColor; }
|
||||
set { _HighPointColor = value; OnStyleChanged(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// Gets whether property should be serialized.
|
||||
/// </summary>
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public bool ShouldSerializeHighPointColor()
|
||||
{
|
||||
return !_HighPointColor.IsEmpty;
|
||||
}
|
||||
/// <summary>
|
||||
/// Resets property to its default value.
|
||||
/// </summary>
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public void ResetHighPointColor()
|
||||
{
|
||||
this.HighPointColor = Color.Empty;
|
||||
}
|
||||
|
||||
private Color _LowPointColor = Color.Empty;
|
||||
/// <summary>
|
||||
/// Gets or sets the color of the low point dot on chart.
|
||||
/// </summary>
|
||||
[Category("Columns"), Description("Indicates color of low point dot on chart.")]
|
||||
public Color LowPointColor
|
||||
{
|
||||
get { return _LowPointColor; }
|
||||
set { _LowPointColor = value; OnStyleChanged(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// Gets whether property should be serialized.
|
||||
/// </summary>
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public bool ShouldSerializeLowPointColor()
|
||||
{
|
||||
return !_LowPointColor.IsEmpty;
|
||||
}
|
||||
/// <summary>
|
||||
/// Resets property to its default value.
|
||||
/// </summary>
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public void ResetLowPointColor()
|
||||
{
|
||||
this.LowPointColor = Color.Empty;
|
||||
}
|
||||
|
||||
private Color _FirstPointColor = Color.Empty;
|
||||
/// <summary>
|
||||
/// Gets or sets the color of the first point dot on chart.
|
||||
/// </summary>
|
||||
[Category("Columns"), Description("Indicates color of first point dot on chart..")]
|
||||
public Color FirstPointColor
|
||||
{
|
||||
get { return _FirstPointColor; }
|
||||
set { _FirstPointColor = value; OnStyleChanged(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// Gets whether property should be serialized.
|
||||
/// </summary>
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public bool ShouldSerializeFirstPointColor()
|
||||
{
|
||||
return !_FirstPointColor.IsEmpty;
|
||||
}
|
||||
/// <summary>
|
||||
/// Resets property to its default value.
|
||||
/// </summary>
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public void ResetFirstPointColor()
|
||||
{
|
||||
this.FirstPointColor = Color.Empty;
|
||||
}
|
||||
|
||||
private Color _LastPointColor = Color.Empty;
|
||||
/// <summary>
|
||||
/// Gets or sets the color of the last point dot on chart.
|
||||
/// </summary>
|
||||
[Category("Columns"), Description("Indicates color of last point dot on chart.")]
|
||||
public Color LastPointColor
|
||||
{
|
||||
get { return _LastPointColor; }
|
||||
set { _LastPointColor = value; OnStyleChanged(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// Gets whether property should be serialized.
|
||||
/// </summary>
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public bool ShouldSerializeLastPointColor()
|
||||
{
|
||||
return !_LastPointColor.IsEmpty;
|
||||
}
|
||||
/// <summary>
|
||||
/// Resets property to its default value.
|
||||
/// </summary>
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public void ResetLastPointColor()
|
||||
{
|
||||
this.LastPointColor = Color.Empty;
|
||||
}
|
||||
|
||||
private bool _DrawControlLine1 = false;
|
||||
/// <summary>
|
||||
/// Gets or sets whether control line is drawn. Default value is false. Control lines can be used to display for example low and high control bounds for the chart.
|
||||
/// </summary>
|
||||
[DefaultValue(false), Description("Indicates whether control line is drawn. Control lines can be used to display for example low and high control bounds for the chart")]
|
||||
public bool DrawControlLine1
|
||||
{
|
||||
get { return _DrawControlLine1; }
|
||||
set { _DrawControlLine1 = value; OnStyleChanged(); }
|
||||
}
|
||||
|
||||
private Color _ControlLine1Color = Color.Empty;
|
||||
/// <summary>
|
||||
/// Gets or sets the color of the first control line.
|
||||
/// </summary>
|
||||
[Category("Columns"), Description("Indicates color of.")]
|
||||
public Color ControlLine1Color
|
||||
{
|
||||
get { return _ControlLine1Color; }
|
||||
set { _ControlLine1Color = value; OnStyleChanged(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// Gets whether property should be serialized.
|
||||
/// </summary>
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public bool ShouldSerializeControlLine1Color()
|
||||
{
|
||||
return !_ControlLine1Color.IsEmpty;
|
||||
}
|
||||
/// <summary>
|
||||
/// Resets property to its default value.
|
||||
/// </summary>
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public void ResetControlLine1Color()
|
||||
{
|
||||
this.ControlLine1Color = Color.Empty;
|
||||
}
|
||||
private double _ControlLine1StartValue = 0d;
|
||||
/// <summary>
|
||||
/// Gets or sets starting value that is used to draw first control line.
|
||||
/// </summary>
|
||||
[DefaultValue(0d), Description("Indicates the starting value that is used to draw first control line.")]
|
||||
public double ControlLine1StartValue
|
||||
{
|
||||
get { return _ControlLine1StartValue; }
|
||||
set { _ControlLine1StartValue = value; OnStyleChanged(); }
|
||||
}
|
||||
private double _ControlLine1EndValue = 0d;
|
||||
/// <summary>
|
||||
/// Gets or sets end value that is used to draw first control line.
|
||||
/// </summary>
|
||||
[DefaultValue(0d), Description("Indicates the end value that is used to draw first control line.")]
|
||||
public double ControlLine1EndValue
|
||||
{
|
||||
get { return _ControlLine1EndValue; }
|
||||
set { _ControlLine1EndValue = value; OnStyleChanged(); }
|
||||
}
|
||||
|
||||
|
||||
private bool _DrawControlLine2 = false;
|
||||
/// <summary>
|
||||
/// Gets or sets whether control line is drawn. Default value is false. Control lines can be used to display for example low and high control bounds for the chart.
|
||||
/// </summary>
|
||||
[DefaultValue(false), Description("Indicates whether control line is drawn. Control lines can be used to display for example low and high control bounds for the chart")]
|
||||
public bool DrawControlLine2
|
||||
{
|
||||
get { return _DrawControlLine2; }
|
||||
set { _DrawControlLine2 = value; OnStyleChanged(); }
|
||||
}
|
||||
|
||||
private Color _ControlLine2Color = Color.Empty;
|
||||
/// <summary>
|
||||
/// Gets or sets the color of the second control line.
|
||||
/// </summary>
|
||||
[Category("Columns"), Description("Indicates color of second control line.")]
|
||||
public Color ControlLine2Color
|
||||
{
|
||||
get { return _ControlLine2Color; }
|
||||
set { _ControlLine2Color = value; OnStyleChanged(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// Gets whether property should be serialized.
|
||||
/// </summary>
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public bool ShouldSerializeControlLine2Color()
|
||||
{
|
||||
return !_ControlLine2Color.IsEmpty;
|
||||
}
|
||||
/// <summary>
|
||||
/// Resets property to its default value.
|
||||
/// </summary>
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public void ResetControlLine2Color()
|
||||
{
|
||||
this.ControlLine2Color = Color.Empty;
|
||||
}
|
||||
private double _ControlLine2StartValue = 0d;
|
||||
/// <summary>
|
||||
/// Gets or sets starting value that is used to draw second control line.
|
||||
/// </summary>
|
||||
[DefaultValue(0d), Description("Indicates the starting value that is used to draw first second line.")]
|
||||
public double ControlLine2StartValue
|
||||
{
|
||||
get { return _ControlLine2StartValue; }
|
||||
set { _ControlLine2StartValue = value; OnStyleChanged(); }
|
||||
}
|
||||
private double _ControlLine2EndValue = 0d;
|
||||
/// <summary>
|
||||
/// Gets or sets end value that is used to draw second control line.
|
||||
/// </summary>
|
||||
[DefaultValue(0d), Description("Indicates the end value that is used to draw second control line.")]
|
||||
public double ControlLine2EndValue
|
||||
{
|
||||
get { return _ControlLine2EndValue; }
|
||||
set { _ControlLine2EndValue = value; OnStyleChanged(); }
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user