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 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) { marker.RecalculateModelCoords(Owner.Owner.WorldRect, Owner.Owner.CanvasRect); candleIndex = marker.centerModel.X; Price = marker.centerModel.Y; }
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); }