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
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