Exemplo n.º 1
0
        protected override void InternalDraw(DrawingContext dc)
        {
            if (_pen == null)
            {
                _pen = Element.GetDashPen(Brushes.Gray);
            }

            var axisXConverter = Element.AxisXConverter;

            var blockLeft  = axisXConverter.DataToScreen(Element.DropedPlacement.Start);
            var blockRight = axisXConverter.DataToScreen(Element.DropedPlacement.End);

            //if(0 < blockLeft)
            dc.DrawGuideLineLine(_pen, new Point(blockLeft, 0), new Point(blockLeft, Element.RenderSize.Height));
            dc.DrawGuideLineLine(_pen, new Point(blockRight, 0), new Point(blockRight, Element.RenderSize.Height));

            base.InternalDraw(dc);
        }
Exemplo n.º 2
0
        protected override void InternalDraw(DrawingContext dc)
        {
            var renderSize = Element.RenderSize;

            dc.DrawRectangle(Brushes.Transparent, null, new Rect(renderSize));
            if (_sectionsCache == null || _maxRenderWidth < renderSize.Width)
            {
                _sectionWidth   = Element.Graduations.Count * Element.Interval;
                _maxRenderWidth = renderSize.Width;
                DrawSections();
            }

            //var max = Element.Graduations.Max();
            //得到相对于大容器的位置
            var viewPortWidth = Element.AxisPanel.ViewportRangeX.ViewMin;// Element.AxisXConverter.ScreenToViewport(0);//Element.AxisPanel.HorizontalOffset;
            //用段的模求出偏移量
            var xTranslateTransform = -viewPortWidth % (_sectionWidth);

            //Debug.Print(_sectionWidth.ToString());

            dc.PushClip(new RectangleGeometry(new Rect(renderSize)));
            dc.PushTransform(new TranslateTransform(xTranslateTransform, renderSize.Height - 14));//
            dc.DrawDrawing(_sectionsCache);
            dc.Pop();
            dc.Pop();

            MakeGuideLines(xTranslateTransform);

            var y = GetY();

            //draw base line
            if (Element.ShowBaseLine)
            {
                dc.DrawGuideLineLine(CreateSelectedLinePen(), new Point(0, y), new Point(renderSize.Width, y));
            }
        }
Exemplo n.º 3
0
        private void DrawHorizontalLine(DrawingContext drawingContext)
        {
            var middleY = RenderSize.Height / 2;

            drawingContext.DrawGuideLineLine(MaxPen, new Point(TextWidth, middleY), new Point(RenderSize.Width - TextWidth, middleY));
        }