Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
Delphi 12 Athens
|
Re: Benötige Hilfe von einen Mathematiker
16. Dez 2008, 13:52
So viel hab ich aus dem obigen Text verstanden:
Zitat von EWeiss:
Kann mir jemand ein Beispiel erstellen mit simplen RadioButton die sich um einen
Ovalen oder Runden Kreis positionieren ?
ein Beispiel:
Delphi-Quellcode:
type
TPointArray = array of TPoint;
function KreisPunkte(
P: TPoint; {Mittelpunkt des Kreises auf dem die Punkte liegen}
R: Word; {Radius des Kreises}
Alpha: Double; {Winkel 0..360 für den Ersten Punkt; 0 = 0Uhr; 90 = 3Uhr}
StepAlpha: Double; {Winkel zwischen den Punkten}
StepCount: Integer {Anzahl der Punkte}
): TPointArray;
var
i: Integer;
begin
{Grad in Bogenmaß umrechnen}
Alpha := DegToRad(Alpha);
StepAlpha := DegToRad(StepAlpha);
SetLength(Result, StepCount);
for i := 0 to StepCount - 1 do
begin
with Result[i] do
begin
x := P.x + Round(R * sin(Alpha));
y := P.y - Round(R * cos(Alpha));
end;
Alpha := Alpha + StepAlpha;
end;
end;
procedure TForm1.PaintBox1Paint(Sender: TObject);
var
PointArray: TPointArray;
P: TPoint;
R: Word;
i: Integer;
s: String;
begin
with PaintBox1 do
begin
P.x := Left + (Width div 2);
P.y := Top + (Height div 2);
R := (Min(Width, Height) div 2) - 40;
PointArray := KreisPunkte(P, R, 180, 15, 6);
{Ausgabe Punkt P}
Canvas.Pen.Color := clBlack;
Canvas.MoveTo(P.x, P.y - 4);
Canvas.LineTo(P.x, P.y + 5);
Canvas.MoveTo(P.x - 4, P.y);
Canvas.LineTo(P.x + 5, P.y);
{Ausgabe Kreis um P mit Radius R}
Canvas.Brush.Style := bsClear;
Canvas.Pen.Color := clBlack;
Canvas.Pen.Style := psDot;
Canvas.Ellipse(P.x - R, P.y - R, P.x + R, P.y + R);
{Ausgabe Punkte auf dem Kreis}
for i := Low(PointArray) to High(PointArray) do
begin
s := IntToStr(i + 1);
with PointArray[i] do
begin
Canvas.Brush.Color := clYellow;
Canvas.Brush.Style := bsSolid;
Canvas.Pen.Color := clBlack;
Canvas.Pen.Style := psSolid;
Canvas.Ellipse(x - 10, y - 10, x + 10, y + 10);
Canvas.Brush.Style := bsClear;
Canvas.Font.Color := clRed;
Canvas.TextOut(x - (Canvas.TextWidth(s) div 2),
y - (Canvas.TextHeight(s) div 2),
s);
end;
end;
end;
end;
|
|
Zitat
|