Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 private double GetTextAngle(IScaleTickLabel tick)
 {
     if (this.TextAlignment != StringAlignmentAngular.RadialOuter && this.TextAlignment != StringAlignmentAngular.RadialInner)
     {
         return(0.0);
     }
     return(this.I_Range.ValueToAngle(tick.Value));
 }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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;
                }
            }
        }
Ejemplo n.º 5
0
 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);
     }
 }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
 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);
 }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
 void IScaleDisplay.DrawTickLabel(PaintArgs p, IScaleTickLabel tick, DrawStringFormat format)
 {
     this.DrawTickLabel(p, tick, format);
 }
Ejemplo n.º 11
0
 protected abstract void DrawTickLabel(PaintArgs p, IScaleTickLabel tick, DrawStringFormat format);