Example #1
0
        private void AddMark(object sender, ExecutedRoutedEventArgs e)
        {
            Point    locMark = (Point)e.Parameter;
            TimeMark mark    = new TimeMark(ToolFunctions.GetTimeByPoint(locMark,
                                                                         new Point(multiLayerGraphic_Canvas.CommonData.Width_LeftBorder, 0),
                                                                         multiLayerGraphic_Canvas.CommonData.TimeInPoint, multiLayerGraphic_Canvas.LeftTime), "Метка " + TimeMarks.Count);

            TimeMarks.Add(mark);
            multiLayerGraphic_Canvas.AddTimeMark(mark);
        }
Example #2
0
 /// <summary>
 /// Передвижение прямоугольника видимого интервала времени
 /// </summary>
 protected override void OnMouseMove(MouseEventArgs e)
 {
     base.OnMouseMove(e);
     if (ScrollingFlag)
     {
         Point    position    = e.GetPosition(this);
         TimeSpan newLeftTime = ToolFunctions.GetTimeByPoint(position, new Point(btScrollLeft.Width, 0), TimeInPoint, LeftTimeBorder);
         if (newLeftTime.CompareTo(LeftTimeBorder) < 0)
         {
             return;
         }
         if (newLeftTime.CompareTo(RightTimeBorder.Subtract(VisibilityTimeInterval)) > 0)
         {
             VisibilityLeftTimeBorder = RightTimeBorder.Subtract(VisibilityTimeInterval);
         }
         else
         {
             VisibilityLeftTimeBorder = newLeftTime;
         }
         RaiseScrolledEvent(this.scrollBarData);
     }
 }
Example #3
0
        /// <summary>
        /// Рендеринг временной шкалы и прямоугольника выбранного интервала
        /// </summary>
        /// <param name="drawingContext">контекст рисования</param>
        protected override void OnRender(DrawingContext drawingContext)
        {
            base.OnRender(drawingContext);
            Size szCellTxt = new Size(6 * (fontSize / 2), RenderSize.Height);
            Rect rect      = new Rect(new Point(btScrollLeft.Width, 0), new Size(RenderSize.Width - btScrollLeft.Width - btScrollRight.Width, RenderSize.Height));

            drawingContext.DrawRoundedRectangle(new LinearGradientBrush(new GradientStopCollection()
            {
                new GradientStop(Colors.LightGray, 0), new GradientStop(Colors.WhiteSmoke, 0.5), new GradientStop(Colors.LightGray, 1)
            },
                                                                        new Point(0, 0), new Point(0, 1)), new Pen(Brushes.DarkGray, 1), new Rect(new Point(0, 0), RenderSize), 5, 5);
            drawingContext.PushClip(new RectangleGeometry(rect));
            /*Левая временная полоса*/
            ToolFunctions.DrawVTimeLine(drawingContext, rect.Location, szCellTxt,
                                        ToolFunctions.TimeSpanToString(ToolFunctions.GetTimeByPoint(rect.Location, rect.Location, TimeInPoint, LeftTimeBorder)), rect.Height, true, fontSize);
            /*Правая временная полоса*/
            ToolFunctions.DrawVTimeLine(drawingContext, new Point(rect.X + rect.Width, rect.Y), szCellTxt,
                                        ToolFunctions.TimeSpanToString(ToolFunctions.GetTimeByPoint(rect.Location, rect.Location, TimeInPoint, RightTimeBorder)), rect.Height, false, fontSize);
            /*количество временных линий*/
            double cnt            = (int)(rect.Width / dxTimeLine);
            double wSmallInterval = rect.Width / cnt;
            Point  linePt         = new Point(rect.X + wSmallInterval, rect.Y);

            /*отрисовка временных линий*/
            for (int i = 0; i < (int)cnt - 1; i++)
            {
                ToolFunctions.DrawVTimeLine(drawingContext, linePt, szCellTxt,
                                            ToolFunctions.TimeSpanToString(ToolFunctions.GetTimeByPoint(linePt, rect.Location, TimeInPoint, LeftTimeBorder)), rect.Height, true, fontSize);
                linePt.X += wSmallInterval;
            }
            drawingContext.PushOpacity(0.5);
            Rect visibleIntervalRect = new Rect(
                new Point(rect.X + ToolFunctions.GetDxByTime(VisibilityLeftTimeBorder, TimeInPoint, LeftTimeBorder), 0),
                new Size(ToolFunctions.GetDxByTime(VisibilityRightTimeBorder, TimeInPoint, LeftTimeBorder) - ToolFunctions.GetDxByTime(VisibilityLeftTimeBorder, TimeInPoint, LeftTimeBorder),
                         rect.Height));

            drawingContext.DrawRoundedRectangle(Brushes.LightCoral, new Pen(Brushes.DarkRed, 1), visibleIntervalRect, 5, 5);
        }
Example #4
0
        /// <summary>
        /// Рендеринг шкалы времени
        /// </summary>
        /// <param name="dc">контекст рисования</param>
        protected void Render(DrawingContext dc)
        {
            dc.PushOpacity(0.6);
            /*Левая временная полоса*/
            ToolFunctions.DrawVTimeLine(dc, this.Field.Location, SizeCellTimeValue,
                                        ToolFunctions.TimeSpanToString(ToolFunctions.GetTimeByPoint(this.Field.Location, this.Field.Location, CommonData.TimeInPoint, CommonData.LeftTime)), this.Field.Height);
            /*Правая временная полоса*/
            ToolFunctions.DrawVTimeLine(dc, new Point(this.Field.X + this.Field.Width, this.Field.Y), SizeCellTimeValue,
                                        ToolFunctions.TimeSpanToString(ToolFunctions.GetTimeByPoint(this.Field.Location, this.Field.Location, CommonData.TimeInPoint, CommonData.RightTime)), this.Field.Height, false);
            /*количество временных линий*/
            double cnt            = (int)(this.Field.Width / dX_TimeLine);
            double wSmallInterval = this.Field.Width / cnt;
            Point  linePt         = new Point(this.Field.X + wSmallInterval, this.Field.Y);

            /*отрисовка временных линий*/
            for (int i = 0; i < (int)cnt - 1; i++)
            {
                ToolFunctions.DrawVTimeLine(dc, linePt, SizeCellTimeValue,
                                            ToolFunctions.TimeSpanToString(ToolFunctions.GetTimeByPoint(linePt, this.Field.Location, CommonData.TimeInPoint, CommonData.LeftTime)), this.Field.Height);
                linePt.X += wSmallInterval;
            }
            dc.Pop();
        }