diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-01-16 12:17:10 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-01-16 12:17:10 +0200 |
| commit | 0fda2ba3ff49bdc1ffc6833f658e2164af187008 (patch) | |
| tree | 6f3a24d0671ebda50debb8511ab40e0bda0a0df0 /Software/Visual_Studio/SideChains/RealTimeGraphEx/FastGraphs/RealTimeGraphExEllipseScroll.cs | |
| parent | 28103646681686bf1b58275d5dbccb92d2b26f9f (diff) | |
| download | Tango-0fda2ba3ff49bdc1ffc6833f658e2164af187008.tar.gz Tango-0fda2ba3ff49bdc1ffc6833f658e2164af187008.zip | |
Embedded RealTimeGraphEx library to solution.
Added graphs to technician view.
Implemented simple sensors data test using Machine Emulator.
Diffstat (limited to 'Software/Visual_Studio/SideChains/RealTimeGraphEx/FastGraphs/RealTimeGraphExEllipseScroll.cs')
| -rw-r--r-- | Software/Visual_Studio/SideChains/RealTimeGraphEx/FastGraphs/RealTimeGraphExEllipseScroll.cs | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/Software/Visual_Studio/SideChains/RealTimeGraphEx/FastGraphs/RealTimeGraphExEllipseScroll.cs b/Software/Visual_Studio/SideChains/RealTimeGraphEx/FastGraphs/RealTimeGraphExEllipseScroll.cs new file mode 100644 index 000000000..cfd9d54c5 --- /dev/null +++ b/Software/Visual_Studio/SideChains/RealTimeGraphEx/FastGraphs/RealTimeGraphExEllipseScroll.cs @@ -0,0 +1,122 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using RealTimeGraphEx.Models; +using RealTimeGraphEx.Enums; + +namespace RealTimeGraphEx.FastGraphs +{ + public class RealTimeGraphExEllipseScroll : RealTimeGraphExLineScroll + { + #region Cross Thread Fields + + protected OpacityTypeEnum _opacityAnimationType; + protected int _ellipseXRadius; + protected int _ellipseYRadius; + + #endregion + + #region Constructors + + public RealTimeGraphExEllipseScroll() + : base() + { + + } + + #endregion + + #region Properties + + public OpacityTypeEnum OpacityAnimationType + { + get { return (OpacityTypeEnum)GetValue(OpacityAnimationTypeProperty); } + set { SetValue(OpacityAnimationTypeProperty, value); } + } + public static readonly DependencyProperty OpacityAnimationTypeProperty = + DependencyProperty.Register("OpacityAnimationType", typeof(OpacityTypeEnum), typeof(RealTimeGraphExEllipseScroll), new PropertyMetadata(OpacityTypeEnum.None, new PropertyChangedCallback(CrossModelChanged))); + + + + public int EllipseXRadius + { + get { return (int)GetValue(EllipseXRadiusProperty); } + set { SetValue(EllipseXRadiusProperty, value); } + } + public static readonly DependencyProperty EllipseXRadiusProperty = + DependencyProperty.Register("EllipseXRadius", typeof(int), typeof(RealTimeGraphExEllipseScroll), new PropertyMetadata(5)); + + + + public int EllipseYRadius + { + get { return (int)GetValue(EllipseYRadiusProperty); } + set { SetValue(EllipseYRadiusProperty, value); } + } + public static readonly DependencyProperty EllipseYRadiusProperty = + DependencyProperty.Register("EllipseYRadius", typeof(int), typeof(RealTimeGraphExEllipseScroll), new PropertyMetadata(5)); + + + + + #endregion + + #region Override Methods + + protected override void OnSetCrossThreadFields() + { + base.OnSetCrossThreadFields(); + + this.Dispatcher.Invoke(() => + { + + _opacityAnimationType = OpacityAnimationType; + _ellipseXRadius = EllipseXRadius; + _ellipseYRadius = EllipseYRadius; + + }, System.Windows.Threading.DispatcherPriority.Send); + } + + /// <summary> + /// Draw the actual polygon on the image. + /// </summary> + /// <param name="bmp"></param> + protected override void OnDrawVisuals(WriteableBitmap bmp) + { + Color stroke = _graphController.dataSeries.GetStrokeColor() != null ? _graphController.dataSeries.GetStrokeColor().Value : _stroke; + Color fill = _graphController.dataSeries.GetFillColor() != null ? _graphController.dataSeries.GetFillColor().Value : _fill; + + double scale = GetPolygonScaleFactor(); + + for (int i = 0; i < graphPolygon.Count; i++) + { + var point = graphPolygon[i]; + + Color processedLineColor = stroke; + Color processedFillColor = fill; + + if (_opacityAnimationType == OpacityTypeEnum.FadeOut) + { + byte opacity = (byte)((((i) * 100 / _maxPoints) * 255) / 100); + + processedLineColor.A = opacity; + processedFillColor.A = opacity; + } + + if (_fillGraph) + { + bmp.FillEllipseCentered((int)(i * scale), (int)ConvertYToImageYFliped(point), _ellipseXRadius, _ellipseYRadius, processedFillColor); + } + + bmp.DrawEllipseCentered((int)(i * scale), (int)ConvertYToImageYFliped(point), _ellipseXRadius, _ellipseYRadius, processedLineColor); + } + } + + #endregion + } +} |
