Hallo erstmal,
ich habe ein komisches Problem und komme da nicht weiter.
Ich hoffe ihr könnt mir helfen...
Folgende Situation:
Ich habe eine eigene Kompo mit einem Kreis in der Mitte. Von diesem Kreis, zeichne ich immer anhand eines Wertes (0-100%) eine Linie vom Mittelpunkt bis zu den Wert in Grad umgerechnet. Z.B. Mein Wert hat 100%, dann zeichne ich einfach eine Linie vom Mittelpunlt bis 0° (also senkrecht nach oben).
Hat mein Wert 25% dann zeichne ich 90° (also waagerecht nach rechts).
Der Wert wird immer vorgegeben...
Jetzt soll der User aber die Möglichkeit haben, die Linie, die ich zeichne selber zu "setzen" (MouseDown) und dementsprechend wird der Wert angepasst.
Ich habe mal eine kleine Grafik angehangen. Die
blauen Kreuze kennzeichnen ein möglichen Mausklick. Die gestrichelte Linie in der Mitte stellt eine mögliche Linie vom Mittelpunkt dar.
Das Problem jetzt ist, wenn die Maus irgendwo hin klickt (aber innerhalb meiner Kompo) wie wandle ich den Wert (X,Y) dann so um, damit ich weiß, wohin ich zeichnen muss?
Delphi-Quellcode:
procedure TMeineKompo.Paint;
var
tmpValue,
tmpGrad : Double;
tmpX,
tmpY : Integer;
begin
inherited Paint;
if ComponentState = [csDesigning] then Exit; { Nur zur Laufzeit ausführen }
tmpValue := Wert; //Enthält mein %Wert
tmpGrad := (tmpValue * 360) / MaxWert; //Enthält den Maximalwert meines %Wertes (=100)
tmpX := Round(sin(DegToRad(tmpGrad)) * Radius);
tmpY := Round(cos(DegToRad(tmpGrad)) * Radius);
Canvas.MoveTo(Self.Mittelpunkt.X, Self.Mittelpunkt.Y);
Canvas.LineTo(Self.Mittelpunkt.X + tmpX, Self.Mittelpunkt.Y - tmpY);
end;
Ich hoffe ihr könnt mir irgendwie helfen, die "Umrechnung der Mausposition zu zeichnen"...
MFG Alex