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;
     }
 }
示例#3
0
 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);
        }
示例#6
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);
        }
        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();
        }
示例#8
0
        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;
        }
示例#9
0
 public void OnMarkerMoved(ChartObjectMarker marker)
 {
     marker.RecalculateModelCoords(Owner.Owner.WorldRect, Owner.Owner.CanvasRect);
     candleIndex = marker.centerModel.X;
     Price       = marker.centerModel.Y;
 }
示例#10
0
 public void OnMarkerMoved(ChartObjectMarker marker)
 {
     throw new NotImplementedException();
 }
 private void DeselectObject()
 {
     editingObject.Selected = false;
     editingObject          = null;
     editingMarker          = null;
 }
示例#12
0
 public void OnMarkerMoved(ChartObjectMarker marker)
 {
 }