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); }
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(); }