Ejemplo n.º 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);
     }
 }
Ejemplo n.º 2
0
 public void Draw(Graphics g, Vista v, Pen pn)
 {
     if (active && visible)
     {
         int i, j;
         for (i = imin; i < imax; i++)
         {
             for (j = jmin; j < jmax; j++)
             {
                 Point p = v.Scala(new Point2D(i * step * Math.Sign(v.Verso.X), j * step * Math.Sign(v.Verso.Y)));
                 g.DrawLine(pn, p.X - 2, p.Y - 2, p.X + 2, p.Y + 2);
                 g.DrawLine(pn, p.X - 2, p.Y + 2, p.X + 2, p.Y - 2);
             }
         }
     }
 }
Ejemplo n.º 3
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);
                }
            }
        }