public override void OnMarkerMoved(ChartObjectMarker marker) { // если речь не идет о точке, задающей ширину канала... if (marker.action == ChartObjectMarker.MarkerAction.Move) { base.OnMarkerMoved(marker); return; } var markerIndex = 0; for (var i = 0; i < markers.Length; i++) { if (markers[i] != marker) { continue; } markerIndex = i - 1; break; } if (markerIndex < 2) { base.OnMarkerMoved(marker); return; } marker.RecalculateModelCoords(Owner.Owner.WorldRect, Owner.Owner.CanvasRect); // определить ширину канала Point3 = marker.centerModel; }
private void EditChartObjectMouseUp() { zoomTool.Enabled = true; if (editingObject != null && editingMarker != null) { // завершить перетаскивание маркера editingMarker = null; } }
public void OnMarkerMoved(ChartObjectMarker marker) { // переместить сам объект screenX = marker.centerScreen.X; screenY = marker.centerScreen.Y; // пересчитать центр marker.RecalculateModelCoords(Owner.Owner.WorldRect, Owner.Owner.CanvasRect); candleIndex = (int)marker.centerModel.X; DateStart = Owner.Owner.Owner.StockSeries.GetCandleOpenTimeByIndex(candleIndex); Price = (float)marker.centerModel.Y; }
private bool SelectObject(IChartInteractiveObject obj) { if (editingObject == obj) { return(false); } if (editingObject != null) { editingObject.Selected = false; } editingObject = obj; obj.Selected = true; editingMarker = null; return(true); }
/// <summary> /// возвращает флаг - необходимость перерисовки /// </summary> private bool EditChartObjectMouseDown(int mouseX, int mouseY, Keys modifiers) { var ptScreen = chart.PointToScreen(new Point(mouseX, mouseY)); int x = ptScreen.X, y = ptScreen.Y; // если объект не выбран - показать диалог выбора объекта if (editingObject == null) { var selected = GetSelectedObjects(x, y); if (selected.Count == 0) { return(false); } if (selected.Count == 1) { SelectObject(selected[0]); return(true); } // множественный выбор chart.toolSkipMouseDown = true; var dlg = new ChartObjectSelectForm(selected); dlg.ShowDialog(); var selectedObj = dlg.SelectedObject; if (selectedObj != null) { SelectObject(selectedObj); return(true); } return(false); } // иначе проверить попадание в маркер var marker = editingObject.IsInMarker(x, y, modifiers); if (marker == null) { // снять выделение с объекта DeselectObject(); return(true); } // маркер будет перемещаться - событие OnMouseMove editingMarker = marker; zoomTool.Enabled = false; return(false); }
public void OnMarkerMoved(ChartObjectMarker marker) { // пересчитать маркер marker.RecalculateModelCoords(Owner.Owner.WorldRect, Owner.Owner.CanvasRect); // переместить if (marker.action == ChartObjectMarker.MarkerAction.Move) { float vx, vy; if (points.Count > 1) { vx = (float)(marker.centerModel.X - (points[0].X + points[1].X) * 0.5f); vy = (float)(marker.centerModel.Y - (points[0].Y + points[1].Y) * 0.5f); } else { vx = (float)(marker.centerModel.X - points[0].X); vy = (float)(marker.centerModel.Y - points[0].Y); } for (var i = 0; i < points.Count; i++) { points[i] = new PointF(points[i].X + vx, points[i].Y + vy); markers[i + 1].centerModel = points[i]; } return; } // растянуть var markerIndex = 0; for (var i = 0; i < markers.Length; i++) { if (markers[i] != marker) { continue; } markerIndex = i - 1; break; } if (markerIndex < 0 || points.Count <= markerIndex) { return; } points[markerIndex] = new PointF((float)marker.centerModel.X, (float)marker.centerModel.Y); }
public void OnMarkerMoved(ChartObjectMarker marker) { var markerIndex = 0; for (var i = 0; i < markers.Length; i++) { if (markers[i] != marker) { continue; } markerIndex = i; break; } marker.RecalculateModelCoords(Owner.Owner.WorldRect, Owner.Owner.CanvasRect); var pointIndex = points.Count == 2 ? markerIndex : 0; points[pointIndex] = new Cortege2 <int, float>((int)marker.centerModel.X, (float)marker.centerModel.Y); // пересчитать отметки Фибоначчи CalculateProjections(); }
public void OnMarkerMoved(ChartObjectMarker marker) { // пересчитать координаты маркера marker.RecalculateModelCoords(Owner.Owner.WorldRect, Owner.Owner.CanvasRect); if (marker.action == ChartObjectMarker.MarkerAction.Move) { // изменилась точка привязки к свечкам PivotPrice = marker.centerModel.Y; PivotIndex = marker.centerModel.X; CalculateTextMarkerCoords(); return; } // изменилось расположение коментария markers[0].CalculateScreenCoords(Owner.Owner.WorldRect, Owner.Owner.CanvasRect); var vx = marker.centerScreen.X - markers[0].centerScreen.X; var vy = marker.centerScreen.Y - markers[0].centerScreen.Y; var len = Math.Sqrt(vx * vx + vy * vy); ArrowLength = (int)len; ArrowAngle = Math.Atan2(vy, vx) * 180 / Math.PI; }
public void OnMarkerMoved(ChartObjectMarker marker) { marker.RecalculateModelCoords(Owner.Owner.WorldRect, Owner.Owner.CanvasRect); candleIndex = marker.centerModel.X; Price = marker.centerModel.Y; }
public void OnMarkerMoved(ChartObjectMarker marker) { throw new NotImplementedException(); }
private void DeselectObject() { editingObject.Selected = false; editingObject = null; editingMarker = null; }
public void OnMarkerMoved(ChartObjectMarker marker) { }