Ejemplo n.º 1
0
        private void DrawLabels(Graphics g,
                                BrushesStorage brushes,
                                Rectangle axisRect, YAxisAlignment alignment)
        {
            var canvasRect = Owner.CanvasRect;
            var worldRect  = Owner.WorldRect;
            var format     = PrepareStringFormat(alignment);
            var provider   = PrepareNumberFormat();
            var brush      = brushes.GetBrush(TextColor);

            using (format)
            {
                var rect = new Rectangle(axisRect.Left + 5, 0, ((axisRect.Width - 5) - 5) - 1, Font.Height);
                for (double i = LabelInfo.Max; i > LabelInfo.Min; i -= LabelInfo.MajorStep)
                {
                    var tf = (PointF)Conversion.WorldToScreen(new PointD(0.0, i), worldRect, canvasRect);
                    rect.Y = ((int)tf.Y) - (Font.Height / 2);
                    double num2 = i / LabelInfo.Exponent;
                    if (axisRect.Contains(rect))
                    {
                        g.DrawString(num2.ToString("N", provider), Font, brush, rect, format);
                    }
                }
                if (CurrentPrice.HasValue)
                {
                    // рисуем текущую цену в шкале
                    DrawSelectedPriceLabel(CurrentPrice.Value,
                                           brush, format, axisRect, worldRect, canvasRect, g);
                }

                if (SelectedLabelPrice.HasValue)
                {
                    // отметка цены для перекрестия
                    DrawSelectedPriceLabel(SelectedLabelPrice.Value,
                                           brush, format, axisRect, worldRect, canvasRect, g);
                }

                switch (ShipsDrawMode)
                {
                case ShipsDrawMode.None:
                    break;

                case ShipsDrawMode.Default:
                    DrawOrderShip(format, axisRect, worldRect, canvasRect, g);       //Рисуем кораблики к открытым сделкам
                    break;

                case ShipsDrawMode.Average:
                    DrawAverageOrderShip(format, axisRect, worldRect, canvasRect, g);       //Рисуем кораблики средних значений к открытым сделкам
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(ShipsDrawMode));
                }

                ExponentLabel.Draw(g, axisRect, alignment);
            }
        }
Ejemplo n.º 2
0
        internal static StringFormat PrepareStringFormat(YAxisAlignment alignment)
        {
            var format = new StringFormat
            {
                Alignment =
                    (alignment == YAxisAlignment.Left ? StringAlignment.Far : StringAlignment.Near),
                Trimming = StringTrimming.None
            };

            format.FormatFlags |= StringFormatFlags.NoClip | StringFormatFlags.NoWrap;
            return(format);
        }
Ejemplo n.º 3
0
 private void DrawTicks(Graphics g, Rectangle axisRect, YAxisAlignment alignment)
 {
     if (Chart.visualSettings.YAxisMajorTickVisible || Chart.visualSettings.YAxisMinorTickVisible)
     {
         Rectangle  canvasRect = Owner.CanvasRect;
         RectangleD worldRect  = Owner.WorldRect;
         var        pen        = new Pen(ForeColor);
         using (pen)
         {
             float left;
             float num2;
             float num3;
             float num4;
             if (alignment == YAxisAlignment.Left)
             {
                 left = ((axisRect.Right - 1) - 5) + 1;
                 num2 = axisRect.Right - 1;
                 num3 = ((axisRect.Right - 1) - 3) + 1;
                 num4 = axisRect.Right - 1;
             }
             else
             {
                 left = axisRect.Left;
                 num2 = (axisRect.Left + 5) - 1;
                 num3 = axisRect.Left;
                 num4 = (axisRect.Left + 3) - 1;
             }
             for (double i = LabelInfo.Max; i > LabelInfo.Min; i -= LabelInfo.MajorStep)
             {
                 var tf = (PointF)Conversion.WorldToScreen(new PointD(0.0, i), worldRect, canvasRect);
                 if (Chart.visualSettings.YAxisMajorTickVisible)
                 {
                     g.DrawLine(pen, left, tf.Y, num2, tf.Y);
                 }
                 if (Chart.visualSettings.YAxisMinorTickVisible)
                 {
                     double y = i;
                     while (y > (i - LabelInfo.MajorStep))
                     {
                         y -= LabelInfo.MinorStep;
                         tf = (PointF)Conversion.WorldToScreen(new PointD(0.0, y), worldRect, canvasRect);
                         g.DrawLine(pen, num3, tf.Y, num4, tf.Y);
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 4
0
        private void DrawBackground(Graphics g, BrushesStorage brushes,
                                    Rectangle axisRect, YAxisAlignment alignment)
        {
            var brush = brushes.GetBrush(BackColor);
            var pen   = new Pen(ForeColor);

            g.FillRectangle(brush, axisRect);
            using (pen)
            {
                if (alignment == YAxisAlignment.Left)
                {
                    g.DrawLine(pen, axisRect.Right - 1, axisRect.Top, axisRect.Right - 1, axisRect.Bottom - 1);
                }
                else if (alignment == YAxisAlignment.Right)
                {
                    g.DrawLine(pen, axisRect.Left, axisRect.Top, axisRect.Left, axisRect.Bottom - 1);
                }
            }
        }
Ejemplo n.º 5
0
        private void DrawLabels(Graphics g,
                                BrushesStorage brushes,
                                Rectangle axisRect, YAxisAlignment alignment)
        {
            var canvasRect = Owner.CanvasRect;
            var worldRect  = Owner.WorldRect;
            var format     = PrepareStringFormat(alignment);
            var provider   = PrepareNumberFormat();
            var brush      = brushes.GetBrush(TextColor);

            using (format)
            {
                var rect = new Rectangle(axisRect.Left + 5, 0, ((axisRect.Width - 5) - 5) - 1, Font.Height);
                for (double i = LabelInfo.Max; i > LabelInfo.Min; i -= LabelInfo.MajorStep)
                {
                    var tf = (PointF)Conversion.WorldToScreen(new PointD(0.0, i), worldRect, canvasRect);
                    rect.Y = ((int)tf.Y) - (Font.Height / 2);
                    double num2 = i / LabelInfo.Exponent;
                    if (axisRect.Contains(rect))
                    {
                        g.DrawString(num2.ToString("N", provider), Font, brush, rect, format);
                    }
                }
                if (CurrentPrice.HasValue)
                {
                    // рисуем текущую цену в шкале
                    DrawSelectedPriceLabel(CurrentPrice.Value,
                                           brush, format, axisRect, worldRect, canvasRect, g);
                }

                if (SelectedLabelPrice.HasValue)
                {
                    // отметка цены для перекрестия
                    DrawSelectedPriceLabel(SelectedLabelPrice.Value,
                                           brush, format, axisRect, worldRect, canvasRect, g);
                }
                ExponentLabel.Draw(g, axisRect, alignment);
            }
        }
Ejemplo n.º 6
0
 private void DrawTicks(Graphics g, Rectangle axisRect, YAxisAlignment alignment)
 {
     if (Chart.visualSettings.YAxisMajorTickVisible || Chart.visualSettings.YAxisMinorTickVisible)
     {
         Rectangle canvasRect = Owner.CanvasRect;
         RectangleD worldRect = Owner.WorldRect;
         var pen = new Pen(ForeColor);
         using (pen)
         {
             float left;
             float num2;
             float num3;
             float num4;
             if (alignment == YAxisAlignment.Left)
             {
                 left = ((axisRect.Right - 1) - 5) + 1;
                 num2 = axisRect.Right - 1;
                 num3 = ((axisRect.Right - 1) - 3) + 1;
                 num4 = axisRect.Right - 1;
             }
             else
             {
                 left = axisRect.Left;
                 num2 = (axisRect.Left + 5) - 1;
                 num3 = axisRect.Left;
                 num4 = (axisRect.Left + 3) - 1;
             }
             for (double i = LabelInfo.Max; i > LabelInfo.Min; i -= LabelInfo.MajorStep)
             {
                 var tf = (PointF)Conversion.WorldToScreen(new PointD(0.0, i), worldRect, canvasRect);
                 if (Chart.visualSettings.YAxisMajorTickVisible)
                 {
                     g.DrawLine(pen, left, tf.Y, num2, tf.Y);
                 }
                 if (Chart.visualSettings.YAxisMinorTickVisible)
                 {
                     double y = i;
                     while (y > (i - LabelInfo.MajorStep))
                     {
                         y -= LabelInfo.MinorStep;
                         tf = (PointF)Conversion.WorldToScreen(new PointD(0.0, y), worldRect, canvasRect);
                         g.DrawLine(pen, num3, tf.Y, num4, tf.Y);
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 7
0
        private void DrawLabels(Graphics g,
            BrushesStorage brushes,
            Rectangle axisRect, YAxisAlignment alignment)
        {
            var canvasRect = Owner.CanvasRect;
            var worldRect = Owner.WorldRect;
            var format = PrepareStringFormat(alignment);
            var provider = PrepareNumberFormat();
            var brush = brushes.GetBrush(TextColor);

            using (format)
            {
                var rect = new Rectangle(axisRect.Left + 5, 0, ((axisRect.Width - 5) - 5) - 1, Font.Height);
                for (double i = LabelInfo.Max; i > LabelInfo.Min; i -= LabelInfo.MajorStep)
                {
                    var tf = (PointF)Conversion.WorldToScreen(new PointD(0.0, i), worldRect, canvasRect);
                    rect.Y = ((int)tf.Y) - (Font.Height / 2);
                    double num2 = i / LabelInfo.Exponent;
                    if (axisRect.Contains(rect))
                    {
                        g.DrawString(num2.ToString("N", provider), Font, brush, rect, format);
                    }
                }
                if (CurrentPrice.HasValue)
                {
                    // рисуем текущую цену в шкале
                    DrawSelectedPriceLabel(CurrentPrice.Value,
                        brush, format, axisRect, worldRect, canvasRect, g);
                }

                if (SelectedLabelPrice.HasValue)
                {
                    // отметка цены для перекрестия
                    DrawSelectedPriceLabel(SelectedLabelPrice.Value,
                        brush, format, axisRect, worldRect, canvasRect, g);
                }
                ExponentLabel.Draw(g, axisRect, alignment);
            }
        }
Ejemplo n.º 8
0
 private void DrawBackground(Graphics g, BrushesStorage brushes,
     Rectangle axisRect, YAxisAlignment alignment)
 {
     var brush = brushes.GetBrush(BackColor);
     var pen = new Pen(ForeColor);
     g.FillRectangle(brush, axisRect);
     using (pen)
     {
         if (alignment == YAxisAlignment.Left)
         {
             g.DrawLine(pen, axisRect.Right - 1, axisRect.Top, axisRect.Right - 1, axisRect.Bottom - 1);
         }
         else if (alignment == YAxisAlignment.Right)
         {
             g.DrawLine(pen, axisRect.Left, axisRect.Top, axisRect.Left, axisRect.Bottom - 1);
         }
     }
 }
Ejemplo n.º 9
0
 internal static StringFormat PrepareStringFormat(YAxisAlignment alignment)
 {
     var format = new StringFormat
                      {
                          Alignment =
                              (alignment == YAxisAlignment.Left ? StringAlignment.Far : StringAlignment.Near),
                          Trimming = StringTrimming.None
                      };
     format.FormatFlags |= StringFormatFlags.NoClip | StringFormatFlags.NoWrap;
     return format;
 }
Ejemplo n.º 10
0
        internal void Draw(Graphics g, Rectangle axisRect, YAxisAlignment alignment)
        {
            YAxisLabelInfo labelInfo    = Owner.LabelInfo;
            StringFormat   stringFormat = YAxis.PrepareStringFormat(alignment);

            using (stringFormat)
            {
                if (((int)Math.Round(labelInfo.Exponent)) != 1)
                {
                    var    ef       = new RectangleF(0f, 0f, 0f, 0f);
                    var    exponent = (int)labelInfo.Exponent;
                    string str      = "";
                    if (labelInfo.Exponent > 1000000.0)
                    {
                        exponent = (int)(labelInfo.Exponent / 1000000.0);
                        str      = "M";
                    }
                    else if (labelInfo.Exponent > 1000.0)
                    {
                        exponent = (int)(labelInfo.Exponent / 1000.0);
                        str      = "K";
                    }
                    if (labelInfo.Exponent < 1.01E-06)
                    {
                        exponent = (int)((labelInfo.Exponent * 1.01) / 1E-06);
                        str      = "u";
                    }
                    else if (labelInfo.Exponent < 0.00101)
                    {
                        exponent = (int)((labelInfo.Exponent * 1.01) / 0.001);
                        str      = "m";
                    }
                    ef.Size = g.MeasureString("x " + exponent + str,
                                              Chart.visualSettings.ExponentLabelFont,
                                              ef.Location, stringFormat);
                    if (alignment == YAxisAlignment.Left)
                    {
                        ef.X = (axisRect.Right - ef.Width) - 2f;
                    }
                    else if (alignment == YAxisAlignment.Right)
                    {
                        ef.X = axisRect.Left + 2;
                    }
                    ef.Y = (axisRect.Bottom - ef.Size.Height) - 1f;
                    if (axisRect.Contains(Rectangle.Round(ef)))
                    {
                        var pen    = new Pen(Chart.visualSettings.ExponentLabelForeColor);
                        var brush  = new SolidBrush(Chart.visualSettings.ExponentLabelBackColor);
                        var brush2 = new SolidBrush(Chart.visualSettings.ExponentLabelTextColor);
                        using (pen)
                        {
                            using (brush)
                            {
                                using (brush2)
                                {
                                    g.FillRectangle(brush, ef);
                                    g.DrawRectangle(pen, (int)ef.X, (int)ef.Y, (int)ef.Width, (int)ef.Height);
                                    g.DrawString("x " + exponent + str,
                                                 Chart.visualSettings.ExponentLabelFont, brush2, ef, stringFormat);
                                }
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 11
0
 internal void Draw(Graphics g, Rectangle axisRect, YAxisAlignment alignment)
 {
     YAxisLabelInfo labelInfo = Owner.LabelInfo;
     StringFormat stringFormat = YAxis.PrepareStringFormat(alignment);
     using (stringFormat)
     {
         if (((int)Math.Round(labelInfo.Exponent)) != 1)
         {
             var ef = new RectangleF(0f, 0f, 0f, 0f);
             var exponent = (int)labelInfo.Exponent;
             string str = "";
             if (labelInfo.Exponent > 1000000.0)
             {
                 exponent = (int)(labelInfo.Exponent / 1000000.0);
                 str = "M";
             }
             else if (labelInfo.Exponent > 1000.0)
             {
                 exponent = (int)(labelInfo.Exponent / 1000.0);
                 str = "K";
             }
             if (labelInfo.Exponent < 1.01E-06)
             {
                 exponent = (int)((labelInfo.Exponent * 1.01) / 1E-06);
                 str = "u";
             }
             else if (labelInfo.Exponent < 0.00101)
             {
                 exponent = (int)((labelInfo.Exponent * 1.01) / 0.001);
                 str = "m";
             }
             ef.Size = g.MeasureString("x " + exponent + str,
                 Chart.visualSettings.ExponentLabelFont,
                 ef.Location, stringFormat);
             if (alignment == YAxisAlignment.Left)
             {
                 ef.X = (axisRect.Right - ef.Width) - 2f;
             }
             else if (alignment == YAxisAlignment.Right)
             {
                 ef.X = axisRect.Left + 2;
             }
             ef.Y = (axisRect.Bottom - ef.Size.Height) - 1f;
             if (axisRect.Contains(Rectangle.Round(ef)))
             {
                 var pen = new Pen(Chart.visualSettings.ExponentLabelForeColor);
                 var brush = new SolidBrush(Chart.visualSettings.ExponentLabelBackColor);
                 var brush2 = new SolidBrush(Chart.visualSettings.ExponentLabelTextColor);
                 using (pen)
                 {
                     using (brush)
                     {
                         using (brush2)
                         {
                             g.FillRectangle(brush, ef);
                             g.DrawRectangle(pen, (int)ef.X, (int)ef.Y, (int)ef.Width, (int)ef.Height);
                             g.DrawString("x " + exponent + str,
                                 Chart.visualSettings.ExponentLabelFont, brush2, ef, stringFormat);
                         }
                     }
                 }
             }
         }
     }
 }