Laden...

CompactFramework: Compass zeichnen

Erstellt von Nachtwind vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.178 Views
N
Nachtwind Themenstarter:in
118 Beiträge seit 2005
vor 15 Jahren
CompactFramework: Compass zeichnen

Hi,
Im moment stehe ich ein wenig auf dem Schlauch.. ich versuche einen kompass auf meinem Display darzustellen und dazu brauche ich natuerlich eine grafische ausgabe.
Soweit ist die idee ja nicht schwer umzusetzen, aber ich komme einfach irgendwie nicht vorran - im moment nutze ich folgenden code:


       private void compass_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.DrawEllipse(new Pen(Color.Black, 4), new Rectangle(0, 0, 135, 135));            
            //Get bearing      
            int head = bearing;
            double x2, y2;
            int  x, y, u, v;

            x = 67;
            y = 0;
            u = 67;
            v = 67;

            x2 = (x - u) * (Math.Cos(Convert.ToDouble(head))) - (y - v) * (Math.Sin(Convert.ToDouble(head))) + u;
            y2 = (x - u) * (Math.Sin(Convert.ToDouble(head))) + (y - v) * (Math.Cos(Convert.ToDouble(head))) + v;

            label1.Text = Convert.ToInt32(x2).ToString() + " : " + Convert.ToInt32(y2).ToString(); //Debug

            e.Graphics.DrawLine(new Pen(Color.Black, 2), Convert.ToInt32(x2), Convert.ToInt32(y2), 135/2, 135/2); 
        }

eigentlich sollten ja x2 und y2 den punkt auf der ellipse (kreis) sein, der durch bearing festgelegt wird - leider klappt das nicht.
Ich tippe darauf, dass das mit den verschiedenen Converts zusammenhaengt, bin mir da aber nicht sicher.
Hat da jemand eine Idee dazu?
Danke schonmal

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo Nachtwind,

ist bearing im Bogenmaß angegeben? Wenn nicht, musst du es umrechnen?

Ansonsten ist (x - u) Null und deshalb fällt der erste Term in deinem Ausdruck immer weg.

herbivore

N
Nachtwind Themenstarter:in
118 Beiträge seit 2005
vor 15 Jahren

Hi und danke.
Das Bogenmass war es - hatte das total vergessen :0)