Beispiel #1
0
        private void CreateUIRepresentation()
        {
            if (Plotter == null)
            {
                return;
            }

            if (DataSource == null)
            {
                return;
            }

            drawnPaths.Clear();

            DataSourceEnvironment environment = CreateEnvironment();
            var points = DataSource.GetPoints(environment);

            var indexedPoints = IndexWrapper.Generate(points);

            // do nothing if there is nothing to draw
            if (!points.Any())
            {
                return;
            }

            transformWhileCreateUI = Plotter.Viewport.Transform;

            int globalMinIndex;
            int globalMaxIndex;

            CreateAndAddPath(indexedPoints, out globalMinIndex, out globalMaxIndex, transformWhileCreateUI);

            indexRange = new Range <int>(globalMinIndex, globalMaxIndex);

            ViewportPanel.SetViewportBounds(canvas, Plotter.Viewport.Visible);

            // switching off content bounds calculation for children of ViewportHostPanel.
            panel.BeginBatchAdd();

            if (canvas.Parent == null)
            {
                panel.Children.Add(canvas);
            }

            if (panel.Plotter == null)
            {
                Plotter.Dispatcher.BeginInvoke(() =>
                {
                    if (panel.Plotter == null && Plotter != null)
                    {
                        Plotter.Children.Add(panel);
                    }
                });
            }

            DataRect bounds = DataRect.Empty;

            if (environment.ContentBounds != null)
            {
                bounds = environment.ContentBounds.Value;
            }
            else
            {
                // todo is this necessary?
                bounds = points.GetBounds();
            }

            Viewport2D.SetContentBounds(this, bounds);
        }
Beispiel #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="PivotSegmentEditor"/> class.
        /// </summary>
        public PivotSegmentEditor()
        {
            ResourceDictionary resources = new ResourceDictionary
            {
                Source = new Uri("/DynamicDataDisplay;component/Charts/Shapes/PivotSegmentEditor.xaml", UriKind.Relative)
            };

            panel.BeginBatchAdd();

            ControlTemplate segmentTemplate = (ControlTemplate)resources["segment"];

            segment             = (Segment)segmentTemplate.LoadContent();
            segment.DataContext = this;

            ControlTemplate startThumbTemplate = (ControlTemplate)resources["leftThumb"];

            startThumb             = (DraggablePoint)startThumbTemplate.LoadContent();
            startThumb.DataContext = this;

            ControlTemplate endThumbTemplate = (ControlTemplate)resources["rightThumb"];

            endThumb             = (DraggablePoint)endThumbTemplate.LoadContent();
            endThumb.DataContext = this;

            ControlTemplate leftRayTemplate = (ControlTemplate)resources["leftRay"];

            leftRay             = (ViewportRay)leftRayTemplate.LoadContent();
            leftRay.DataContext = this;

            ControlTemplate rightRayTemplate = (ControlTemplate)resources["rightRay"];

            rightRay             = (ViewportRay)rightRayTemplate.LoadContent();
            rightRay.DataContext = this;

            ControlTemplate mTextTemplate = (ControlTemplate)resources["mText"];
            TextBlock       mText         = (TextBlock)mTextTemplate.LoadContent();

            panel.Children.Add(mText);
            mText.DataContext = this;

            ControlTemplate leftPointGridTemplate = (ControlTemplate)resources["leftPointGrid"];
            Panel           leftPointGrid         = (Panel)leftPointGridTemplate.LoadContent();

            panel.Children.Add(leftPointGrid);
            leftPointGrid.DataContext = this;

            ControlTemplate rightPointGridTemplate = (ControlTemplate)resources["rightPointGrid"];
            Panel           rightPointGrid         = (Panel)rightPointGridTemplate.LoadContent();

            panel.Children.Add(rightPointGrid);
            rightPointGrid.DataContext = this;

            ControlTemplate  leftTextTemplate = (ControlTemplate)resources["leftText"];
            FrameworkElement leftBorder       = (FrameworkElement)leftTextTemplate.LoadContent();

            panel.Children.Add(leftBorder);
            leftBorder.DataContext = this;

            ControlTemplate  rightTextTemplate = (ControlTemplate)resources["rightText"];
            FrameworkElement rightBorder       = (FrameworkElement)rightTextTemplate.LoadContent();

            panel.Children.Add(rightBorder);
            rightBorder.DataContext = this;
        }