Beispiel #1
0
        /// <inheritdoc/>
        protected override UIElement OnGetLegendSymbol()
        {
            var grid = new Grid
            {
                MinWidth  = 16,
                MinHeight = 16,
            };

            if (HorizontalMajorLineStyle != null)
            {
                var horizontalMajorLines = new Path {
                    Width = 16, Height = 16, Stretch = Stretch.Uniform
                };
                horizontalMajorLines.SetBinding(StyleProperty, new Binding("HorizontalMajorLineStyle")
                {
                    Source = this
                });
                using (var renderContext = new PathRenderer(horizontalMajorLines).Open())
                {
                    renderContext.DrawLine(new Point(0, 0), new Point(16, 0));
                    renderContext.DrawLine(new Point(0, 8), new Point(16, 8));
                    renderContext.DrawLine(new Point(0, 16), new Point(16, 16));
                }
                grid.Children.Add(horizontalMajorLines);
            }

            if (HorizontalMinorLineStyle != null)
            {
                var horizontalMinorLines = new Path {
                    Width = 16, Height = 16, Stretch = Stretch.Uniform
                };
                horizontalMinorLines.SetBinding(StyleProperty, new Binding("HorizontalMinorLineStyle")
                {
                    Source = this
                });
                using (var renderContext = new PathRenderer(horizontalMinorLines).Open())
                {
                    renderContext.DrawLine(new Point(0, 4), new Point(16, 4));
                    renderContext.DrawLine(new Point(0, 12), new Point(16, 12));
                }
                grid.Children.Add(horizontalMinorLines);
            }

            if (VerticalMajorLineStyle != null)
            {
                var verticalMajorLines = new Path {
                    Width = 16, Height = 16, Stretch = Stretch.Uniform
                };
                verticalMajorLines.SetBinding(StyleProperty, new Binding("VerticalMajorLineStyle")
                {
                    Source = this
                });
                using (var renderContext = new PathRenderer(verticalMajorLines).Open())
                {
                    renderContext.DrawLine(new Point(0, 0), new Point(0, 16));
                    renderContext.DrawLine(new Point(8, 0), new Point(8, 16));
                    renderContext.DrawLine(new Point(16, 0), new Point(16, 16));
                }
                grid.Children.Add(verticalMajorLines);
            }

            if (VerticalMinorLineStyle != null)
            {
                var verticalMinorLines = new Path {
                    Width = 16, Height = 16, Stretch = Stretch.Uniform
                };
                verticalMinorLines.SetBinding(StyleProperty, new Binding("VerticalMinorLineStyle")
                {
                    Source = this
                });
                using (var renderContext = new PathRenderer(verticalMinorLines).Open())
                {
                    renderContext.DrawLine(new Point(4, 0), new Point(4, 16));
                    renderContext.DrawLine(new Point(12, 0), new Point(12, 16));
                }
                grid.Children.Add(verticalMinorLines);
            }

            return(grid);
        }
Beispiel #2
0
        /// <summary>
        /// Creates a tick on the axis.
        /// </summary>
        /// <param name="value">The value at which the ticks should be drawn.</param>
        /// <param name="tickLength">Length of the tick.</param>
        /// <param name="renderContext">The render context.</param>
        /// <returns>The bounding rectangle of the tick.</returns>
        private Rect AddTick(double value, double tickLength, PathRenderer.Context renderContext)
        {
            // Determine start and end point of the tick.
            double position = GetPosition(value);
            Point start;
            Point end;

            bool oneSidedTicks = OneSidedTicks;

            if (_isXAxis)
            {
                if (LabelsAboveAxis)
                {
                    start = oneSidedTicks ? new Point(position, _originY) : new Point(position, _originY + 0.5 * tickLength);
                    end = new Point(start.X, start.Y - tickLength);
                }
                else
                {
                    start = oneSidedTicks ? new Point(position, _originY) : new Point(position, _originY - 0.5 * tickLength);
                    end = new Point(start.X, start.Y + tickLength);
                }
            }
            else
            {
                if (LabelsAboveAxis)
                {
                    start = oneSidedTicks ? new Point(_originX, position) : new Point(_originX + 0.5 * tickLength, position);
                    end = new Point(start.X - tickLength, start.Y);
                }
                else
                {
                    start = oneSidedTicks ? new Point(_originX, position) : new Point(_originX - 0.5 * tickLength, position);
                    end = new Point(start.X + tickLength, start.Y);
                }
            }

            renderContext.DrawLine(start, end);

            _internalTitleOffset = Math.Max(_internalTitleOffset, tickLength);

            // Estimate bounds
            Rect bounds;
            if (IsXAxis)
            {
                if (LabelsAboveAxis)
                    bounds = new Rect(end.X - 0.5, end.Y, 1, tickLength);
                else
                    bounds = new Rect(start.X - 0.5, start.Y, 1, tickLength);
            }
            else
            {
                if (LabelsAboveAxis)
                    bounds = new Rect(end.X, end.Y - 0.5, tickLength, 1);
                else
                    bounds = new Rect(start.X, start.Y - 0.5, tickLength, 1);
            }

            return bounds;
        }
Beispiel #3
0
        /// <inheritdoc/>
        protected override UIElement OnGetLegendSymbol()
        {
            var grid = new Grid
            {
                MinWidth = 16,
                MinHeight = 16,
            };

            if (HorizontalMajorLineStyle != null)
            {
                var horizontalMajorLines = new Path { Width = 16, Height = 16, Stretch = Stretch.Uniform };
                horizontalMajorLines.SetBinding(StyleProperty, new Binding("HorizontalMajorLineStyle") { Source = this });
                using (var renderContext = new PathRenderer(horizontalMajorLines).Open())
                {
                    renderContext.DrawLine(new Point(0, 0), new Point(16, 0));
                    renderContext.DrawLine(new Point(0, 8), new Point(16, 8));
                    renderContext.DrawLine(new Point(0, 16), new Point(16, 16));
                }
                grid.Children.Add(horizontalMajorLines);
            }

            if (HorizontalMinorLineStyle != null)
            {
                var horizontalMinorLines = new Path { Width = 16, Height = 16, Stretch = Stretch.Uniform };
                horizontalMinorLines.SetBinding(StyleProperty, new Binding("HorizontalMinorLineStyle") { Source = this });
                using (var renderContext = new PathRenderer(horizontalMinorLines).Open())
                {
                    renderContext.DrawLine(new Point(0, 4), new Point(16, 4));
                    renderContext.DrawLine(new Point(0, 12), new Point(16, 12));
                }
                grid.Children.Add(horizontalMinorLines);
            }

            if (VerticalMajorLineStyle != null)
            {
                var verticalMajorLines = new Path { Width = 16, Height = 16, Stretch = Stretch.Uniform };
                verticalMajorLines.SetBinding(StyleProperty, new Binding("VerticalMajorLineStyle") { Source = this });
                using (var renderContext = new PathRenderer(verticalMajorLines).Open())
                {
                    renderContext.DrawLine(new Point(0, 0), new Point(0, 16));
                    renderContext.DrawLine(new Point(8, 0), new Point(8, 16));
                    renderContext.DrawLine(new Point(16, 0), new Point(16, 16));
                }
                grid.Children.Add(verticalMajorLines);
            }

            if (VerticalMinorLineStyle != null)
            {
                var verticalMinorLines = new Path { Width = 16, Height = 16, Stretch = Stretch.Uniform };
                verticalMinorLines.SetBinding(StyleProperty, new Binding("VerticalMinorLineStyle") { Source = this });
                using (var renderContext = new PathRenderer(verticalMinorLines).Open())
                {
                    renderContext.DrawLine(new Point(4, 0), new Point(4, 16));
                    renderContext.DrawLine(new Point(12, 0), new Point(12, 16));
                }
                grid.Children.Add(verticalMinorLines);
            }

            return grid;
        }