Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#5

Re: Benötige Hilfe von einen Mathematiker

  Alt 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;
Miniaturansicht angehängter Grafiken
kreis_209.jpg  
  Mit Zitat antworten Zitat