예제 #1
0
 public override void Regen(Vista v, bool addToDisplayList = true)
 {
     ps = v.Scala(p);
     if (addToDisplayList)
     {
         v.AddDL(this, Def.Shape.Nodo, ps.X, ps.Y);
     }
 }
예제 #2
0
        public override void Regen(Vista v, bool addToDisplayList = true)
        {
            Point2D p1 = nd[0].P;
            Point2D p2 = nd[1].P;

            if ((p1 != null) && (p2 != null))
            {
                nd[0].Regen(v, false);                              // Rigenera i nodi di estremità calcolando solo la scala...
                nd[1].Regen(v, false);                              // ... ma senza aggiungerli alla display list
                pc = v.Scala(Point2D.Midpoint(nd[0].P, nd[1].P));

                Point2D delta = p2 - p1;
                rotation = Math.Atan2(delta.Y * Math.Sign(v.Verso.Y), delta.X * Math.Sign(v.Verso.X)) * 180 / Math.PI;
                m.Reset();                                          // Torna alla matrice identità (non richiedo riallocazione)
                m.Translate(pc.X, pc.Y);
                m.Rotate((float)rotation);

                if (addToDisplayList)
                {
                    v.AddDL(this, Def.Shape.Ramo, pc.X, pc.Y);
                }
            }
        }