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); }
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)); } }
private void DrawHorizontalLine(DrawingContext drawingContext) { var middleY = RenderSize.Height / 2; drawingContext.DrawGuideLineLine(MaxPen, new Point(TextWidth, middleY), new Point(RenderSize.Width - TextWidth, middleY)); }