コード例 #1
0
 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();
 }
コード例 #2
0
ファイル: ChartComment.cs プロジェクト: johnmensen/TradeSharp
        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;
        }
コード例 #3
0
        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;
        }
コード例 #4
0
ファイル: SeriesMarker.cs プロジェクト: johnmensen/TradeSharp
 public void OnMarkerMoved(ChartObjectMarker marker)
 {
     marker.RecalculateModelCoords(Owner.Owner.WorldRect, Owner.Owner.CanvasRect);
     candleIndex = marker.centerModel.X;
     Price = marker.centerModel.Y;
 }
コード例 #5
0
        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);
        }
コード例 #6
0
ファイル: TrendLine.cs プロジェクト: johnmensen/TradeSharp
        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);
        }