protected override void UpdateScaleExtents(PaintArgs p) { Rectangle drawRectangle = p.DrawRectangle; Rectangle value = new Rectangle(this.CenterPoint.X - this.HubRadius, this.CenterPoint.Y - this.HubRadius, 2 * this.HubRadius, 2 * this.HubRadius); this.m_DrawExtent.Reset(); this.m_DrawExtent.Add(this.CenterPoint); this.m_DrawExtent.Add(value); for (int i = 0; i < base.TickList.Count; i++) { Point[] tickLine = this.GetTickLine(base.TickList[i] as IScaleTickBase); this.m_DrawExtent.Add(tickLine[0], tickLine[1]); if (base.TickList[i] is IScaleTickLabel) { IScaleTickLabel scaleTickLabel = base.TickList[i] as IScaleTickLabel; if (scaleTickLabel.TextVisible) { Rectangle textRect = this.GetTextRect(p, scaleTickLabel); double textAngle = this.GetTextAngle(scaleTickLabel); Point[] array = Math2.ToRotatedPoints(textAngle, textRect); for (int j = 0; j < array.Length; j++) { this.m_DrawExtent.Add(array[j]); } } } } this.m_MaxRequiredWidth = this.m_DrawExtent.MaxWidth + 4; this.m_MaxRequiredHeight = this.m_DrawExtent.MaxHeight + 4; this.CenterPoint = this.m_DrawExtent.GetNewCenterPoint(this.CenterPoint, drawRectangle); }
private double GetTextAngle(IScaleTickLabel tick) { if (this.TextAlignment != StringAlignmentAngular.RadialOuter && this.TextAlignment != StringAlignmentAngular.RadialInner) { return(0.0); } return(this.I_Range.ValueToAngle(tick.Value)); }
private void DrawTickLabelRotatedOuter(PaintArgs p, IScaleTickLabel tick, DrawStringFormat format) { double num = this.I_Range.ValueToAngle(tick.Value); Rectangle textRect = this.GetTextRect(p, tick); Point point = Math2.ToCenterPoint(textRect); GraphicsState gstate = p.Graphics.Save(); p.Graphics.TranslateTransform((float)point.X, (float)point.Y); p.Graphics.RotateTransform(180f + (float)num); p.Graphics.TranslateTransform((float)(-point.X), (float)(-point.Y)); p.Graphics.DrawString(tick.Text, tick.Font, p.Graphics.Brush(tick.ForeColor), textRect, format); p.Graphics.Restore(gstate); }
protected void UpdateTicksTextSizeInfo(PaintArgs p) { for (int i = 0; i < this.TickList.Count; i++) { if (this.TickList[i] is IScaleTickLabel) { IScaleTickLabel scaleTickLabel = this.TickList[i] as IScaleTickLabel; scaleTickLabel.TextSize = p.Graphics.MeasureString(scaleTickLabel.Text, scaleTickLabel.Font, false); } } int num = (this is ScaleDisplayLinear) ? this.TextWidthMinPixels : 0; this.m_MaxTextWidth = 0; this.m_MaxTextHeight = 0; for (int j = 0; j < this.TickList.Count; j++) { if (this.TickList[j] is IScaleTickLabel) { IScaleTickLabel scaleTickLabel = this.TickList[j] as IScaleTickLabel; if (scaleTickLabel.TextVisible) { this.m_MaxTextWidth = Math.Max(this.m_MaxTextWidth, scaleTickLabel.TextSize.Width); this.m_MaxTextHeight = Math.Max(this.m_MaxTextHeight, scaleTickLabel.TextSize.Height); num = Math.Max(num, this.m_MaxTextWidth); } } } this.MaxTextSize = new Size(this.m_MaxTextWidth, this.m_MaxTextHeight); this.MaxTextAlignmentSize = new Size(num, this.m_MaxTextHeight); if (this.TickInfo.StackingDimension == StackingDimension.Height) { this.m_MaxTickStackingDepth = this.MaxTextSize.Height; } else { this.m_MaxTickStackingDepth = this.MaxTextSize.Width; } for (int k = 0; k < this.TickList.Count; k++) { if (this.TickList[k] is IScaleTickLabel) { IScaleTickLabel scaleTickLabel = this.TickList[k] as IScaleTickLabel; scaleTickLabel.TextMaxSize = this.MaxTextSize; scaleTickLabel.TextAlignmentSize = this.MaxTextAlignmentSize; scaleTickLabel.StackingDimension = this.TickInfo.StackingDimension; } } }
protected override void DrawTickLabel(PaintArgs p, IScaleTickLabel tick, DrawStringFormat format) { if (this.TextAlignment == StringAlignmentAngular.Center) { this.DrawTickLabelHorizontalCenter(p, tick, format); } else if (this.TextAlignment == StringAlignmentAngular.Justified) { this.DrawTickLabelHorizontalJustified(p, tick, format); } else if (this.TextAlignment == StringAlignmentAngular.RadialOuter) { this.DrawTickLabelRotatedOuter(p, tick, format); } else if (this.TextAlignment == StringAlignmentAngular.RadialInner) { this.DrawTickLabelRotatedInner(p, tick, format); } }
private Rectangle GetTextRectangle(IScaleTickLabel tick) { int num; int num2; if (tick.StackingDimension == StackingDimension.Height) { num = tick.TextAlignmentSize.Width; num2 = tick.TextAlignmentSize.Height; } else { num = tick.TextAlignmentSize.Height; num2 = tick.TextAlignmentSize.Width; } int num3 = tick.Length + tick.TextMargin; Point tickPoint = this.GetTickPoint(tick); int num4 = (this.Direction != 0) ? (-(num + num3)) : num3; Point point = (this.Orientation != Orientation.Vertical) ? new Point(tickPoint.X - num2 / 2, tickPoint.Y + num4) : new Point(tickPoint.X + num4, tickPoint.Y - num2 / 2); return(new Rectangle(point.X, point.Y, tick.TextAlignmentSize.Width, tick.TextAlignmentSize.Height)); }
protected override void DrawTickLabel(PaintArgs p, IScaleTickLabel tick, DrawStringFormat format) { Rectangle textRectangle = this.GetTextRectangle(tick); p.Graphics.DrawScaleRotatedText(tick.Text, tick.Font, tick.ForeColor, textRectangle, this.TextRotation, format); }
private void DrawTickLabelHorizontalCenter(PaintArgs p, IScaleTickLabel tick, DrawStringFormat format) { p.Graphics.DrawString(tick.Text, tick.Font, p.Graphics.Brush(tick.ForeColor), this.GetTextRect(p, tick), format); }
private Rectangle GetTextRect(PaintArgs p, IScaleTickLabel tick) { double num = Math2.AngleNormalized(this.I_Range.ValueToAngle(tick.Value)); float num2 = (float)tick.TextSize.Width; float num3 = (float)tick.TextSize.Height; Size size = p.Graphics.MeasureString(base.TickMajor.Font); Point point = default(Point); Rectangle result = default(Rectangle); if (this.TextAlignment == StringAlignmentAngular.Center) { float num4 = (float)(this.Radius + this.Margin + base.TickMajor.Length + tick.TextMargin + tick.TextMaxSize.Width / 2); point = new Point((int)(Math2.Cos(num) * (double)num4 + (double)this.CenterPoint.X), (int)(Math2.Sin(num) * (double)num4 + (double)this.CenterPoint.Y)); result = new Rectangle((int)((float)point.X - num2 / 2f), (int)((float)point.Y - num3 / 2f), (int)num2, (int)num3); goto IL_0479; } if (this.TextAlignment == StringAlignmentAngular.Justified) { float num5 = (float)Math.Sqrt((double)(size.Width * size.Width + size.Height * size.Height)) / 2f; float num4 = (float)(this.Radius + base.TickMajor.Length + tick.TextMargin) + num5; point = new Point((int)(Math2.Cos(num) * (double)num4 + (double)this.CenterPoint.X), (int)(Math2.Sin(num) * (double)num4 + (double)this.CenterPoint.Y)); result = new Rectangle((int)((float)point.X - num2 / 2f), (int)((float)point.Y - num3 / 2f), (int)num2, (int)num3); if (num == 0.0) { result.Offset((int)(num2 / 2f - (float)(size.Width / 2)), 0); } else if (num == 180.0) { result.Offset((int)((0f - num2) / 2f + (float)(size.Width / 2)), 0); } else if (num > 0.0 && num < 90.0) { result.Offset((int)(num2 / 2f - (float)(size.Width / 2)), 0); } else if (num > 90.0 && num < 270.0) { result.Offset((int)((0f - num2) / 2f + (float)(size.Width / 2)), 0); } else if (num > 270.0 && num < 360.0) { result.Offset((int)(num2 / 2f - (float)(size.Width / 2)), 0); } goto IL_0479; } Point point2 = default(Point); if (this.TextAlignment == StringAlignmentAngular.RadialOuter) { float num6 = (float)(this.Radius + base.TickMajor.Length + tick.TextMargin + tick.TextSize.Width / 2); point2 = new Point((int)(Math2.Cos(num) * (double)num6 + (double)this.CenterPoint.X), (int)(Math2.Sin(num) * (double)num6 + (double)this.CenterPoint.Y)); result = new Rectangle(point2.X - tick.TextSize.Width / 2, point2.Y - tick.TextSize.Height / 2, tick.TextSize.Width, tick.TextSize.Height); goto IL_0479; } if (this.TextAlignment == StringAlignmentAngular.RadialInner) { float num6 = (float)(this.Radius - tick.TextMargin - tick.TextMaxSize.Width / 2); point2 = new Point((int)(Math2.Cos(num) * (double)num6 + (double)this.CenterPoint.X), (int)(Math2.Sin(num) * (double)num6 + (double)this.CenterPoint.Y)); result = new Rectangle(point2.X - tick.TextMaxSize.Width / 2, point2.Y - tick.TextMaxSize.Height / 2, tick.TextMaxSize.Width, tick.TextMaxSize.Height); goto IL_0479; } result = Rectangle.Empty; return(result); IL_0479: return(result); }
void IScaleDisplay.DrawTickLabel(PaintArgs p, IScaleTickLabel tick, DrawStringFormat format) { this.DrawTickLabel(p, tick, format); }
protected abstract void DrawTickLabel(PaintArgs p, IScaleTickLabel tick, DrawStringFormat format);