public void PaintCustom(ChartGraphics graph) { CommonElements common = this.axis.Common; PointF empty = PointF.Empty; PointF empty2 = PointF.Empty; RectangleF rectangleF = this.axis.PlotAreaPosition.ToRectangleF(); foreach (CustomLabel customLabel in this.axis.CustomLabels) { if ((customLabel.GridTicks & GridTicks.Gridline) == GridTicks.Gridline) { double num = (customLabel.To + customLabel.From) / 2.0; if (num >= this.axis.GetViewMinimum() && num <= this.axis.GetViewMaximum()) { if (this.axis.AxisPosition == AxisPosition.Left || this.axis.AxisPosition == AxisPosition.Right) { empty.X = rectangleF.X; empty2.X = rectangleF.Right; empty.Y = (float)this.axis.GetLinearPosition(num); empty2.Y = empty.Y; } if (this.axis.AxisPosition == AxisPosition.Top || this.axis.AxisPosition == AxisPosition.Bottom) { empty.Y = rectangleF.Y; empty2.Y = rectangleF.Bottom; empty.X = (float)this.axis.GetLinearPosition(num); empty2.X = empty.X; } if (common.ProcessModeRegions) { if (!this.axis.chartArea.Area3DStyle.Enable3D || this.axis.chartArea.chartAreaIsCurcular) { GraphicsPath graphicsPath = new GraphicsPath(); if (Math.Abs(empty.X - empty2.X) > Math.Abs(empty.Y - empty2.Y)) { graphicsPath.AddLine(empty.X, (float)(empty.Y - 1.0), empty2.X, (float)(empty2.Y - 1.0)); graphicsPath.AddLine(empty2.X, (float)(empty2.Y + 1.0), empty.X, (float)(empty.Y + 1.0)); graphicsPath.CloseAllFigures(); } else { graphicsPath.AddLine((float)(empty.X - 1.0), empty.Y, (float)(empty2.X - 1.0), empty2.Y); graphicsPath.AddLine((float)(empty2.X + 1.0), empty2.Y, (float)(empty.X + 1.0), empty.Y); graphicsPath.CloseAllFigures(); } common.HotRegionsList.AddHotRegion(graphicsPath, true, graph, ChartElementType.Gridlines, this); } else { graph.Draw3DGridLine(this.axis.chartArea, this.borderColor, this.borderWidth, this.borderStyle, empty, empty2, this.axis.AxisPosition == AxisPosition.Left || this.axis.AxisPosition == AxisPosition.Right, common, this); } } if (common.ProcessModePaint) { if (!this.axis.chartArea.Area3DStyle.Enable3D || this.axis.chartArea.chartAreaIsCurcular) { graph.DrawLineRel(this.borderColor, this.borderWidth, this.borderStyle, empty, empty2); } else { graph.Draw3DGridLine(this.axis.chartArea, this.borderColor, this.borderWidth, this.borderStyle, empty, empty2, this.axis.AxisPosition == AxisPosition.Left || this.axis.AxisPosition == AxisPosition.Right, this.axis.Common, this); } } } } } }
public void Paint(ChartGraphics graph, CommonElements common, bool drawLinesOnly) { if (!this.axis.chartArea.chartAreaIsCurcular) { RectangleF rect = this.axis.chartArea.PlotAreaPosition.ToRectangleF(); bool flag = true; if (this.axis.AxisPosition == AxisPosition.Bottom || this.axis.AxisPosition == AxisPosition.Top) { flag = false; } Series series = null; if (this.axis.axisType == AxisName.X || this.axis.axisType == AxisName.X2) { ArrayList xAxesSeries = this.axis.chartArea.GetXAxesSeries((AxisType)((this.axis.axisType != 0) ? 1 : 0), this.axis.SubAxisName); if (xAxesSeries.Count > 0) { series = this.axis.Common.DataManager.Series[xAxesSeries[0]]; if (series != null && !series.XValueIndexed) { series = null; } } } double num = this.axis.GetViewMinimum(); if (!this.axis.chartArea.chartAreaIsCurcular || this.axis.axisType == AxisName.Y || this.axis.axisType == AxisName.Y2) { double num2 = this.Interval; if (this.interlaced) { num2 /= 2.0; } num = this.axis.AlignIntervalStart(num, num2, this.IntervalType, series); } if (this.Interval != 0.0 && (this.axis.GetViewMaximum() - this.axis.GetViewMinimum()) / this.axis.GetIntervalSize(num, this.interval, this.intervalType, series, 0.0, DateTimeIntervalType.Number, false) > 10000.0) { return; } DateTimeIntervalType type = (this.IntervalOffsetType == DateTimeIntervalType.Auto) ? this.IntervalType : this.IntervalOffsetType; if (this.Interval == 0.0) { num = this.IntervalOffset; } else if (this.IntervalOffset > 0.0) { num += this.axis.GetIntervalSize(num, this.IntervalOffset, type, series, 0.0, DateTimeIntervalType.Number, false); } else if (this.IntervalOffset < 0.0) { num -= this.axis.GetIntervalSize(num, 0.0 - this.IntervalOffset, type, series, 0.0, DateTimeIntervalType.Number, false); } int num3 = 0; while (num3++ <= 10000) { if (this.StripWidth > 0.0 && !drawLinesOnly) { double num5 = num + this.axis.GetIntervalSize(num, this.StripWidth, this.StripWidthType, series, this.IntervalOffset, type, false); if (num5 > this.axis.GetViewMinimum() && num < this.axis.GetViewMaximum()) { RectangleF empty = RectangleF.Empty; double val = (double)(float)this.axis.GetLinearPosition(num); double val2 = (double)(float)this.axis.GetLinearPosition(num5); if (flag) { empty.X = rect.X; empty.Width = rect.Width; empty.Y = (float)Math.Min(val, val2); empty.Height = (float)Math.Max(val, val2) - empty.Y; empty.Intersect(rect); } else { empty.Y = rect.Y; empty.Height = rect.Height; empty.X = (float)Math.Min(val, val2); empty.Width = (float)Math.Max(val, val2) - empty.X; empty.Intersect(rect); } if (empty.Width > 0.0 && empty.Height > 0.0) { graph.StartHotRegion(this.href, this.toolTip); if (!this.axis.chartArea.Area3DStyle.Enable3D) { graph.StartAnimation(); graph.FillRectangleRel(empty, this.BackColor, this.BackHatchStyle, this.BackImage, this.BackImageMode, this.BackImageTransparentColor, this.BackImageAlign, this.BackGradientType, this.BackGradientEndColor, this.BorderColor, this.BorderWidth, this.BorderStyle, Color.Empty, 0, PenAlignment.Inset); graph.StopAnimation(); } else { this.Draw3DStrip(graph, empty, flag); } graph.EndHotRegion(); this.PaintTitle(graph, empty); if (common.ProcessModeRegions && !this.axis.chartArea.Area3DStyle.Enable3D) { common.HotRegionsList.AddHotRegion(graph, empty, this.ToolTip, this.Href, this.MapAreaAttributes, this, ChartElementType.StripLines, string.Empty); } } } } else if (this.StripWidth == 0.0 && drawLinesOnly && num > this.axis.GetViewMinimum() && num < this.axis.GetViewMaximum()) { PointF empty2 = PointF.Empty; PointF empty3 = PointF.Empty; if (flag) { empty2.X = rect.X; empty2.Y = (float)this.axis.GetLinearPosition(num); empty3.X = rect.Right; empty3.Y = empty2.Y; } else { empty2.X = (float)this.axis.GetLinearPosition(num); empty2.Y = rect.Y; empty3.X = empty2.X; empty3.Y = rect.Bottom; } graph.StartHotRegion(this.href, this.toolTip); if (!this.axis.chartArea.Area3DStyle.Enable3D) { graph.DrawLineRel(this.BorderColor, this.BorderWidth, this.BorderStyle, empty2, empty3); } else { graph.Draw3DGridLine(this.axis.chartArea, this.borderColor, this.borderWidth, this.borderStyle, empty2, empty3, flag, this.axis.Common, this); } graph.EndHotRegion(); this.PaintTitle(graph, empty2, empty3); if (common.ProcessModeRegions) { SizeF size = new SizeF((float)(this.BorderWidth + 1), (float)(this.BorderWidth + 1)); size = graph.GetRelativeSize(size); RectangleF empty4 = RectangleF.Empty; if (flag) { empty4.X = empty2.X; empty4.Y = (float)(empty2.Y - size.Height / 2.0); empty4.Width = empty3.X - empty2.X; empty4.Height = size.Height; } else { empty4.X = (float)(empty2.X - size.Width / 2.0); empty4.Y = empty2.Y; empty4.Width = size.Width; empty4.Height = empty3.Y - empty2.Y; } common.HotRegionsList.AddHotRegion(graph, empty4, this.ToolTip, this.Href, this.MapAreaAttributes, this, ChartElementType.StripLines, string.Empty); } } if (this.Interval > 0.0) { num += this.axis.GetIntervalSize(num, this.Interval, this.IntervalType, series, this.IntervalOffset, type, false); } if (!(this.Interval > 0.0)) { break; } if (!(num <= this.axis.GetViewMaximum())) { break; } } } }
private void DrawGrid(ChartGraphics graph, double current, int numberOfElements, int index) { CommonElements common = this.axis.Common; PointF point = PointF.Empty; PointF empty = PointF.Empty; PointF empty2 = PointF.Empty; RectangleF rectangleF = this.axis.PlotAreaPosition.ToRectangleF(); if (this.axis.AxisPosition == AxisPosition.Left || this.axis.AxisPosition == AxisPosition.Right) { empty.X = rectangleF.X; empty2.X = rectangleF.Right; empty.Y = (float)this.axis.GetLinearPosition(current); empty2.Y = empty.Y; point = empty; } if (this.axis.AxisPosition == AxisPosition.Top || this.axis.AxisPosition == AxisPosition.Bottom) { empty.Y = rectangleF.Y; empty2.Y = rectangleF.Bottom; empty.X = (float)this.axis.GetLinearPosition(current); empty2.X = empty.X; point = empty2; } if (common.ProcessModeRegions) { if (this.axis.chartArea.Area3DStyle.Enable3D && !this.axis.chartArea.chartAreaIsCurcular) { graph.Draw3DGridLine(this.axis.chartArea, this.borderColor, this.borderWidth, this.borderStyle, empty, empty2, this.axis.AxisPosition == AxisPosition.Left || this.axis.AxisPosition == AxisPosition.Right, common, this); } else if (!this.axis.chartArea.chartAreaIsCurcular) { GraphicsPath graphicsPath = new GraphicsPath(); if (Math.Abs(empty.X - empty2.X) > Math.Abs(empty.Y - empty2.Y)) { graphicsPath.AddLine(empty.X, (float)(empty.Y - 1.0), empty2.X, (float)(empty2.Y - 1.0)); graphicsPath.AddLine(empty2.X, (float)(empty2.Y + 1.0), empty.X, (float)(empty.Y + 1.0)); graphicsPath.CloseAllFigures(); } else { graphicsPath.AddLine((float)(empty.X - 1.0), empty.Y, (float)(empty2.X - 1.0), empty2.Y); graphicsPath.AddLine((float)(empty2.X + 1.0), empty2.Y, (float)(empty.X + 1.0), empty.Y); graphicsPath.CloseAllFigures(); } common.HotRegionsList.AddHotRegion(graphicsPath, true, graph, ChartElementType.Gridlines, this); } } if (common.ProcessModePaint) { if (this.axis.chartArea.chartAreaIsCurcular) { this.InitAnimation(this.axis.Common, point, graph, numberOfElements, index); graph.StartAnimation(); if (this.axis.axisType == AxisName.Y) { this.axis.DrawCircularLine(this, graph, this.borderColor, this.borderWidth, this.borderStyle, empty.Y); } if (this.axis.axisType == AxisName.X) { ICircularChartType circularChartType = this.axis.chartArea.GetCircularChartType(); if (circularChartType != null && circularChartType.RadialGridLinesSupported()) { this.axis.DrawRadialLine(this, graph, this.borderColor, this.borderWidth, this.borderStyle, current); } } graph.StopAnimation(); } else if (!this.axis.chartArea.Area3DStyle.Enable3D || this.axis.chartArea.chartAreaIsCurcular) { this.InitAnimation(this.axis.Common, point, graph, numberOfElements, index); graph.StartAnimation(); graph.DrawLineRel(this.borderColor, this.borderWidth, this.borderStyle, empty, empty2); graph.StopAnimation(); } else { graph.Draw3DGridLine(this.axis.chartArea, this.borderColor, this.borderWidth, this.borderStyle, empty, empty2, this.axis.AxisPosition == AxisPosition.Left || this.axis.AxisPosition == AxisPosition.Right, this.axis.Common, this, numberOfElements, index); } } }