示例#1
0
        public override IChartInteractiveObject LoadObject(XmlElement objectNode, CandleChartControl owner, bool trimObjectsOutOfHistory = false)
        {
            var obj = new AsteriskTooltip();

            obj.LoadFromXML(objectNode, owner);
            obj.Owner = this;
            data.Add(obj);
            return(obj);
        }
示例#2
0
        protected override void OnMouseDown(List <SeriesEditParameter> parameters,
                                            MouseEventArgs e, Keys modifierKeys, out IChartInteractiveObject objectToEdit)
        {
            objectToEdit = null;
            if (e.Button != MouseButtons.Left)
            {
                return;
            }
            // по одному клику добавить маркер, по двум - открыть
            // редактор

            // получить время и цену
            var clientPoint = Chart.PointToScreen(new Point(e.X, e.Y));

            clientPoint = Chart.StockPane.PointToClient(clientPoint);
            var x = clientPoint.X;
            var y = clientPoint.Y;

            var markers = data.Where(aster => aster.IsIn(
                                         x - Chart.StockPane.CanvasRect.Left, y)).ToList();

            if (markers.Count > 0)
            {
                var selected = markers[markers.Count - 1];
                // показать текст маркера во всплывающем окне
                var markerDlg = new MarkerWindow {
                    Text = selected.Text
                };
                var result = markerDlg.ShowDialog();

                if (markerDlg.IsDeleteBtnPressed)
                {
                    data.Remove(selected);
                }
                else
                if (result == DialogResult.OK)
                {
                    selected.Text = markerDlg.Text;
                }
                return;
            }

            var pointD = Conversion.ScreenToWorld(new PointD(x, y),
                                                  Chart.StockPane.WorldRect, Chart.StockPane.CanvasRect);

            // поставить маркер и открыть диалог редактирования свойств
            var isShiftPressed = (modifierKeys & Keys.Shift) == Keys.Shift;

            var text           = SeriesEditParameter.TryGetParamValue(parameters, "Text", "e");
            var lineColor      = SeriesEditParameter.TryGetParamValue(parameters, "Stroke", Color.Black);
            var fillColor      = SeriesEditParameter.TryGetParamValue(parameters, "Filling", Color.White);
            var textShift      = SeriesEditParameter.TryGetParamValue(parameters, "Text_Shift", "e");
            var lineColorShift = SeriesEditParameter.TryGetParamValue(parameters, "Stroke_Shift", Color.Black);
            var fillColorShift = SeriesEditParameter.TryGetParamValue(parameters, "Filling_Shift", Color.White);
            var shape          = SeriesEditParameter.TryGetParamValue(parameters, "Type", AsteriskTooltip.ShapeType.СтрелкаВверх);
            var shapeShift     = SeriesEditParameter.TryGetParamValue(parameters, "Type_Shift", AsteriskTooltip.ShapeType.СтрелкаВниз);
            var alphaColor     = SeriesEditParameter.TryGetParamValue(parameters, "Transparency", 192);

            var marker = new AsteriskTooltip
            {
                Price        = (float)pointD.Y,
                CandleIndex  = (int)(Math.Round(pointD.X)),
                Shape        = isShiftPressed ? shapeShift : shape,
                Transparency = alphaColor,
                ColorFill    = isShiftPressed ? fillColorShift : fillColor,
                ColorLine    = isShiftPressed ? lineColorShift : lineColor,
                Sign         = isShiftPressed ? textShift : text,
                Owner        = this
            };

            if (Owner.Owner.Owner.AdjustObjectColorsOnCreation)
            {
                marker.AjustColorScheme(Owner.Owner.Owner);
            }

            marker.DateStart = Chart.StockSeries.GetCandleOpenTimeByIndex(marker.CandleIndex);
            data.Add(marker);
            //var dlg = new ObjectPropertyWindow(new object[] { marker });
            Chart.toolSkipMouseDown = true;
            //dlg.ShowDialog();
        }