Visualizzazione dei risultati da 1 a 8 su 8

Visualizzazione discussione

  1. #4
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308
    Ciao.
    "t" è il numero di tracce (pixel) che voglio disegnare. Ogni traccia viene calcolata dentro il ciclo. E la pictureBox si "aggiorna" dopo ogni tracca aggiunta, sempre dentro il ciclo. Però io vedo solo "l'ultima videata", quella con tutte le tracce. Ti posto ilo codice completo all'interno di un button_click:

    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....
    Ultima modifica di escocat; 19-11-2013 a 19:26

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.