webForumDet fria alternativet

Hjälpreda för ett rundbord.

.NET

1 svar · 984 visningar · startad av saw

Medlem sedan mars 20011 880 inlägg
Frågan#1

Jag håller på att göra ett litet program som skall hjälpa mig med mitt rundbord(ett bord för min metallfräs för att kunna dela in för hålborning, kuggfräsning mm).
Jag har ingen delningsapparat på mitt bord, så jag får räknar.
Så här ser det ut just nu.

public int cirkelGrad=360;
private void button1_Click(object sender, EventArgs e)
        {//calculate
            listBox1.Items.Clear();
            int times = Convert.ToInt32(tDevision.Text);
            int result = cirkelGrad / times;
            int firstResult = 0;
            for (int i = 1; 1 < times; i++)
            {
                if (firstResult < cirkelGrad + 1)
                {
                    listBox1.Items.Add(firstResult.ToString());
                    firstResult += result;
                }
                else
                    return;
            }
            Application.DoEvents();
        }

Jag använder mig av int för jag vill inte ha några decimaler.
I det mesta så fungerar detta, men lite galet ändå och det jag skulle vilja ha hjälp med är.
Om result inte är ett heltal(visas inte med int) då skall operationen avbrytas
( om jag låter times vara 200 t ex så räknar den upp varje heltal [1,2,3 ...])
Jag skulle också vara tacksam om man grafiskt kunde illustrera detta också.
Att rita grafiken är ju enkelt

 private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Pen myPen = new Pen(Color.Red);
            int r =200;     // radius of circle      
            int x =this.Height/2, y=this.Width/2;  // center coordinates of circle
            SolidBrush mybrush = new SolidBrush(Color.AntiqueWhite); 
            e.Graphics.FillEllipse(mybrush, x - r, y - r, r, r);
            e.Graphics.DrawEllipse(myPen, x - r, y - r, r, r);
        }

.. men jag skulle vilja ha utmarketat alla punkterna med( dvs om times) .
Tacksam för hjälp. :stud

Medlem sedan mars 20011 880 inlägg
#2

Jag har gjort lite ändringar.
Jag lade till en combobox med item 1 - 10.
Ändrat ifrån int till decimal

try
            {
                int decimaler = Convert.ToInt32(cbo.Text);
                listBox1.Items.Clear();
                decimal times = Convert.ToDecimal(tDevision.Text);
                decimal result = cirkelGrad / times;
                label2.Text = "With decimals " + Math.Round(result, decimaler).ToString() 
                + "\n" + "\r" + "None decimals " + Math.Round(result, 0).ToString();
                decimal firstResult = result;
                for (int i = 1; 1 < times; i++)
                {
                    if (firstResult < cirkelGrad + 1)
                    {
                        listBox1.Items.Add(Math.Round(firstResult, decimaler).ToString());
                        firstResult += result;
                    }
                    else
                        return;
                }
                Application.DoEvents();
            }
            catch { }

Nu fungerar detta som jag hadde tänkt, man ställer bara in det antal decimaler som man vill ha...
Det jag funderar på nu är hur man skall kunna rita ut detta i en cirkel dvs göra punkterna på rätt ställe.

251 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)