public FormPeriodVisualProp(PeriodVisual source)
 {
     this.VisualSource = source;
     InitializeComponent();
     this.TBBeg.Text = VisualSource.Source.Beg.ToString();
     this.TBPer.Text = VisualSource.Source.Per.ToString();
     this.TBN.Text = VisualSource.Source.N;
     foreach (Change ch in VisualSource.Source.Changes)
         Changes.Add(ch.Copy());
 }
Beispiel #2
0
        public override void Redraw()
        {
            int i, j, BeginTakt = wnd.BeginTakt, EndTakt = wnd.EndTakt;
            Sig = Signal;// getDrawChanges(wnd.TaktCount, BeginTakt, EndTakt);
            ChPrev = Sig.Changes[0];
            Canvas Can = CanLine;
            int TTakt = Project.TTakt;
            int TaktsDraw = EndTakt - BeginTakt + 1;
            int TimeWidth = TaktsDraw * Project.TTakt;
            CanWidth = (Can.Parent as TreeViewItem).ActualWidth;
            if (CanWidth <= 0)
                CanWidth = wnd.LBSigCans.ActualWidth;
            double TaktWidth = CanWidth * 1.0 / TaktsDraw * 1.0;
            double pixK = CanWidth * 1.0 / TimeWidth * 1.0;
            double timeK = TimeWidth * 1.0 / CanWidth * 1.0;
            int LineHeight = Settings.LineHeight;

            for (i = 0; i < PChangesGens.Count; i++)
            {
                Can.Children.Remove(PChangesGens[i]);
            }
            //Can.Children.Clear();
            PChangesGens.Clear();
            foreach (PeriodVisual pv in PeriodVisuals)
            {
                wnd.GSVSignals.Children.Remove(pv.Can);
            }
            PeriodVisuals.Clear();
            //Change ChCurrent;
            int CurrentVal = ChPrev.Value;
            double CurrentX = 0;
            Polyline PLine;

            PeriodVisual Pv;
            foreach (Period p in Signal.Periods)
            {
                Pv = new PeriodVisual(p, Parent, wnd);
                Pv.Redraw();
                PeriodVisuals.Add(Pv);
            }

            int GEN_DRAW_TYPE = (Gen.Type == Generator.RZ) ? Generator.R0 : Gen.Type;   // заменяет тип RZ на R0 (для упрощения switch)
            switch (GEN_DRAW_TYPE)
            {
                case Generator.DNRZ:
                    for (i=0; i<Sig.Changes.Count; i++)
                    {
                        PLine = new Polyline();
                        PLine.StrokeThickness = (isSelected) ? Settings.SelectedThickness : Settings.SignalThickness;
                        PLine.Stroke = Sig.ChangeBrushes[CurrentVal];
                        PLine.Points.Add(new Point { X = CurrentX - 1, Y = Change.GetHeightDelta(CurrentVal, LineHeight) });
                        CurrentX = (Sig.Changes[i].Takt - BeginTakt) * TaktWidth;
                        if (CurrentX < 0) CurrentX = 0;
                        PLine.Points.Add(new Point { X = CurrentX, Y = Change.GetHeightDelta(CurrentVal, LineHeight) });
                        CurrentVal = Sig.Changes[i].Value;
                        PLine.Points.Add(new Point { X = CurrentX, Y = Change.GetHeightDelta(CurrentVal, LineHeight) });
                        PChangesGens.Add(PLine);
                    }
                    PLine = new Polyline();
                    PLine.StrokeThickness = (isSelected) ? Settings.SelectedThickness : Settings.SignalThickness;
                    PLine.Stroke = Sig.ChangeBrushes[CurrentVal];
                    PLine.Points.Add(new Point { X = CurrentX, Y = Change.GetHeightDelta(CurrentVal, LineHeight) });
                    PLine.Points.Add(new Point { X = CanWidth, Y = Change.GetHeightDelta(CurrentVal, LineHeight) });
                    PChangesGens.Add(PLine);
                    foreach (Polyline P in PChangesGens)
                        Can.Children.Add(P);
                    return;
                case Generator.NRZ:
                    return;
                case Generator.R0:
                    return;
                case Generator.R1:
                    return;

            }
        }