codice:
private void button3_Click(object sender, EventArgs e)
{
button3.Enabled = false;
string a;
int n1, t = int.Parse(textBox16.Text), P, Q, P0 = 600, Q0 = 200,U = int.Parse(label6.Text);
float R1, D1, F1, V1, K = float.Parse(textBox17.Text);
bit = new Bitmap(pictureBox1.Width, pictureBox1.Height);//creiamo una bitmap "vuota" che ha solo delle misure
Graphics gra = Graphics.FromImage(bit);//associamo una grafica alla bitmap appena creata
SolidBrush bru = new SolidBrush(Color.LightYellow);//per riempire le forme
Pen pen = new Pen(bru);//strumento di disegno
//DrawCircle(gra, P0, Q0, R, pen, U);//disegna una circonferenza di centro P0,Q0 e raggio ra con la pen e l'unità U
FillCircle(gra, P0, Q0, R, bru, U);//disegna un cerchio di centro P0,Q0 e raggio ra con la pen e l'unità U
pictureBox1.Image = bit;//aggiorna la pictureBox con la nuova bitmap
if (listBox1.Items.Count == 0)
return;
// 1 2 3 4
// 1234567890123456789012345678901234567890123456
// nnnnnn RRRRRRR DDDDDDD FFFFFFF VVVV.VVVVV PPPs
for (int i = 0; i < listBox1.Items.Count; i++)
{
a = listBox1.Items[i].ToString();
if (int.Parse(Mid(a, 8, 7)) > 0)
{
n1 = int.Parse(Left(a, 6));//6-8-8-10
R1 = float.Parse(Mid(a, 7, 8));
D1 = float.Parse(Mid(a, 15, 8));
F1 = float.Parse(Mid(a, 23, 8));
V1 = float.Parse(Mid(a, 31, 10));
float Ax = 0f, Ay = 0f, Vx = 0f, Vy = -V1, X = n1 * R, Y = 0f, d3;
//ora tracciamo i pixel
for (int j = 0; j < t; j++)
{
//bit.SetPixel(oldp, oldq, Color.Black);
d3 = (float)Math.Pow(X * X + Y * Y, 3f / 2f);
Ax = -G * M * X / d3;
Ay = -G * M * Y / d3;
Vx += Ax;
Vy += Ay;
X += Vx;
Y += Vy;
P = P0 + (int)(X / U);
Q = Q0 + (int)(Y / U / K);
if (P > 0 & P < pictureBox1.Width & Q > 0 & Q < pictureBox1.Height)
bit.SetPixel(P, Q, Color.DarkRed);
pictureBox1.Image = bit;//aggiorniamo di nuovo la pictureBox
}
}
}
button3.Enabled = true;
}
All'interno di un Timer la cosa mi riesce, ma vorrei capire perchè non riesce senza usare il timer_Tick....