Mam taką prockę:
procedure TfrmZegar.RysujKreske(promien, kat, x, y: integer;
Canvas: TCanvas);
var
xs,ys : integer;
begin
xs := round(promien * Sin(kat) + x);
ys := round(promien * Cos(kat) + y);
Canvas.MoveTo(xs, ys);
Canvas.LineTo(x, y);
end;
a tak ryzuję kąt:
RysujKreske(200, 0, 250, 250, Canvas);
RysujKreske(200, (StrToInt(Edit1.Text) - 1) * 44, 250, 250, Canvas);
Jak zrobić żeby otrzymać dokładnie taki kąt jaki chcę? Bo to co się tam pokazuje to są jakieś hejrezje ;-)
Sam znalazłem rozwiązanie i się nim podzielę, bo może ktoś też z tego skorzysta.
zmodyfikowałem procke:
procedure TfrmZegar.RysujKreske(promien, x, y: integer; kat: Extended;
Canvas: TCanvas);
var
xs,ys : integer;
begin
xs := round(promien * Sin(kat) + x);
ys := round(promien * Cos(kat) + y);
Canvas.MoveTo(xs, ys);
Canvas.LineTo(x, y);
end;
oraz jej wywołanie:
procedure TfrmZegar.Button1Click(Sender: TObject);
begin
RysujKreske(200, 250, 250, 0, Canvas);
RysujKreske(200, 250, 250, DegToRad(StrToFloat(Edit1.Text)), Canvas);
end;
Chodzi o to że trzeba podać kąt w radianach!