using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Circolo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private VettoreCircolare<PointF> registro = null;
private Tela foglio = null;
private void Form1_Load(object sender, EventArgs e)
{
trackBarEstremi.Minimum = 10;
trackBarEstremi.Maximum = 2000;
trackBarEstremi.Value = 200;
trackBarIncremento.Minimum = 2;
trackBarIncremento.Maximum = 50;
trackBarIncremento.Value = trackBarIncremento.Minimum;
foglio
= new Tela
(pictureBoxFoglio.
Size.
Width, pictureBoxFoglio.
Size.
Height,
-1.4f,
-1.05f, 1.4f
)
{
Penna
= new Pen
(Color.
FromArgb(0, 120, 40
), 1
)
};
labelEstremi.Text = String.Format("Punti: {0}", trackBarEstremi.Value);
labelIncremento.Text = string.Format("Incremento: {0}", trackBarIncremento.Value);
registro
= new VettoreCircolare
<PointF
>();
Traccia(trackBarEstremi.Value, trackBarIncremento.Value);
}
private void TrackBarEstremi_Scroll(object sender, EventArgs e)
{
labelEstremi.Text = String.Format("Punti: {0}", trackBarEstremi.Value);
Traccia(trackBarEstremi.Value, trackBarIncremento.Value);
}
private void TrackBarIncremento_Scroll(object sender, EventArgs e)
{
labelIncremento.Text = string.Format("Incremento: {0}", trackBarIncremento.Value);
Traccia(trackBarEstremi.Value, trackBarIncremento.Value);
}
private void Traccia(int estremi, int passo)
{
CaricaPunti(estremi);
foglio.Cancella(Color.FromArgb(10, 5, 2));
foglio.
Assi(new Pen
(Color.
FromArgb(125, 125, 125
), 1
));
Tratto segmento
= new Tratto
(0f, 0f, 0f, 0f
);
for (int i=0; i<estremi; i++)
{
segmento.inizio = registro[i];
segmento.fine = registro[i * passo];
foglio.Linea(segmento);
}
pictureBoxFoglio.Image = foglio.Disegno;
}
private void CaricaPunti(int estremi)
{
if (estremi != registro.Dimensione())
{
registro.Cancella();
double alfa, passo;
passo = Math.PI * 2.0 / estremi;
PointF nuovo
= new PointF
();
for (int i=0; i<estremi; i++)
{
alfa = i * passo;
nuovo.X = (float)Math.Cos(alfa);
nuovo.Y = (float)Math.Sin(alfa);
registro.Aggiungi(nuovo);
}
}
}
}
}