public void OnMarkerMoved(ChartObjectMarker marker) { throw new NotImplementedException(); }
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) { 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); candleIndex = marker.centerModel.X; Price = marker.centerModel.Y; }
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; }
public void OnMarkerMoved(ChartObjectMarker marker) { }
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 virtual void OnMarkerMoved(ChartObjectMarker marker) { marker.RecalculateModelCoords(Owner.Owner.WorldRect, Owner.Owner.CanvasRect); if (copyModeOn) { // копировать исходную линию ((TrendLineSeries)Owner).CopyLine(this); copyModeOn = false; } // параллельный перенос if (marker.action == ChartObjectMarker.MarkerAction.Move) { var mid = linePoints.Count == 2 ? new PointD( (linePoints[0].X + linePoints[1].X) * 0.5, (linePoints[0].Y + linePoints[1].Y) * 0.5) : linePoints[0]; var vx = marker.centerModel.X - mid.X; var vy = marker.centerModel.Y - mid.Y; for (var i = 1; i < 3; i++) { markers[i].centerModel = new PointD(markers[i].centerModel.X + vx, markers[i].centerModel.Y + vy); } linePoints[0] = markers[1].centerModel; linePoints[linePoints.Count - 1] = markers[2].centerModel; return; } // растягивание var markerIndex = 0; for (var i = 0; i < markers.Length; i++) { if (markers[i] != marker) continue; markerIndex = i - 1; break; } var pointIndex = markerIndex >= linePoints.Count ? 0 : markerIndex; linePoints[pointIndex] = marker.centerModel; markers[0].centerModel = new PointD( (markers[1].centerModel.X + markers[2].centerModel.X) * 0.5, (markers[1].centerModel.Y + markers[2].centerModel.Y) * 0.5); }
/// <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; }
private void DeselectObject() { editingObject.Selected = false; editingObject = null; editingMarker = null; }
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; }
private void EditChartObjectMouseUp() { zoomTool.Enabled = true; if (editingObject != null && editingMarker != null) { // завершить перетаскивание маркера editingMarker = null; } }