/// <summary> /// Plot /// </summary> /// <param name="dc"></param> /// <param name="fin"></param> /// <param name="penna"></param> public override void Plot(Graphics dc, Finestra fin, Pen penna) { if(IsValid) { Point2D bassosx, altodx, diag_meta; float alfini, alffin, alfswp; diag_meta = new Point2D( this.Radius, this.Radius); bassosx = this.Center - diag_meta; altodx = this.Center + diag_meta; if(IsCircle) { Point bsx, adx; bsx = fin.Get(bassosx); adx = fin.Get(altodx); int xm,ym,xM,yM; xm = Math.Min(bsx.X, adx.X); xM = Math.Max(bsx.X, adx.X); ym = Math.Min(bsx.Y, adx.Y); yM = Math.Max(bsx.Y, adx.Y); Rectangle rct = new Rectangle(new Point(xm,ym), new Size(xM-xm,yM-ym)); dc.DrawEllipse(penna,rct); } else { Point start, end, center, bsx, adx; start = fin.Get(this.pStart); end = fin.Get(this.pEnd); center = fin.Get( this.Center); bsx = fin.Get(bassosx); adx = fin.Get(altodx); int xm,ym,xM,yM; xm = Math.Min(bsx.X, adx.X); xM = Math.Max(bsx.X, adx.X); ym = Math.Min(bsx.Y, adx.Y); yM = Math.Max(bsx.Y, adx.Y); Rectangle rct = new Rectangle(new Point(xm,ym), new Size(xM-xm,yM-ym)); // Cambiati segni e scambiati ini con fin... alffin = (float)(-this.AlfaIni*180/Math.PI); alfini = (float)(-this.AlfaFin*180/Math.PI); if(alfini < 0.0) alfini = 360.0F + alfini; if(alffin < 0.0) alffin = 360.0F + alffin; // alfaini e alfafin corretti e concordi if(alffin >= alfini) // calcolo sweep alfswp = alffin - alfini; else alfswp = 360.0F-alfini + alffin; dc.DrawArc(penna,rct,alfini,alfswp); } } }
/// <summary> /// Disegna /// </summary> /// <param name="dc"></param> /// <param name="fin"></param> /// <param name="penna"></param> public override void Plot(Graphics dc, Finestra fin, Pen penna) { if(IsValid) { Point start, end; start = fin.Get(this.pStart); end = fin.Get(this.pEnd); dc.DrawLine(penna,start,end); } }
/// <summary> /// Da completare /// </summary> /// <param name="dc"></param> /// <param name="fin"></param> /// <param name="penna"></param> public override void Plot(Graphics dc, Finestra fin, Pen penna) { #warning SorgenteOttica.Plot da provare ! if(IsValid) { Point start, end; Point2D vettore = lineaRaggio.Vector(); // Direzione //double alfa = vettore.Alfa(); // Angolo Point2D normale = vettore.Normal(); // Normale Point2D vmeta = normale * diametro * 0.5; // Vettore di meta` lunghezza Point2D pp, pm; pp = lineaRaggio.P1 + vmeta; // Origini pm = lineaRaggio.P1 - vmeta; start = fin.Get(pp); end = fin.Get(pm); dc.DrawLine(penna,start,end); dc.DrawLine(penna,start,end); } }