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); } }
internal YAxis(Pane owner) : base(owner) { NumberDecimalDigitsAuto = true; MinAuto = true; MaxAuto = true; labelInfo = new YAxisLabelInfo(); LeftAxisRect = new Rectangle(0, 0, 0, 0); RightAxisRect = new Rectangle(0, 0, 0, 0); exponentLabel = new ExponentLabel(this); }
internal YAxis(Pane owner) : base(owner) { NumberDecimalDigitsAuto = true; MinAuto = true; MaxAuto = true; labelInfo = new YAxisLabelInfo(); LeftAxisRect = new Rectangle(0, 0, 0, 0); RightAxisRect = new Rectangle(0, 0, 0, 0); exponentLabel = new ExponentLabel(this); showExtraPriceMark = AppConfig.GetBooleanParam("VerbosePriceMark", false); }
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); } }