Einzelnen Beitrag anzeigen

Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Kreis in Vier teile einteilen ?

  Alt 10. Jun 2007, 21:44
Hallo,

wenn ich dich richtig verstanden habe, so in etwa:
Delphi-Quellcode:
procedure Kreis4Farben(cav: TCanvas; iLeft, iTop, DMesser: integer);
var
  PTemp: TPoint;
  Halb, Viertel, DreiV: integer;
begin
  Halb := DMesser div 2;
  Viertel := Halb div 2;
  DreiV := Halb + Viertel;
  with cav do
  begin
    GetViewportOrgEx(Handle, PTemp);
    SetViewportOrgEx(Handle, iLeft, iTop, nil);
    Pen.Color:= clRed;
    Arc(0, 0, DMesser, DMesser, DMesser, Halb, Halb, 0);
    MoveTo(DMesser, Halb);
    LineTo(Halb, Halb);
    MoveTo(Halb, Halb);
    LineTo(Halb, 0);
    Brush.Color := clRed;
    FloodFill(DreiV, Viertel, clred, fsBorder);

    Pen.Color:= clYellow;
    Arc(0, 0, DMesser, DMesser, Halb, 0, 0, Halb);
    MoveTo(0, Halb);
    LineTo(Halb, Halb);
    MoveTo(Halb, Halb);
    LineTo(Halb, 0);
    Brush.Color := clYellow;
    FloodFill(Viertel, Viertel, clYellow, fsBorder);

    Pen.Color := clGreen;
    Arc(0, 0, DMesser, DMesser, 0, Halb, Halb, DMesser);
    MoveTo(0, Halb);
    LineTo(Halb, Halb);
    MoveTo(Halb, Halb);
    LineTo(Halb, DMesser);
    Brush.Color := clGreen;
    FloodFill(Viertel, DreiV, clGreen, fsBorder);

    Pen.Color := clAqua;
    Arc(0, 0, DMesser, DMesser, Halb, DMesser, DMesser, Halb);
    MoveTo(DMesser, Halb);
    LineTo(Halb, Halb);
    MoveTo(Halb, Halb);
    LineTo(Halb, DMesser);
    Brush.Color:= clAqua;
    FloodFill(DreiV, DreiV, clAqua, fsBorder);
    SetViewportOrgEx(Handle, PTemp.X, PTemp.Y, nil);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Width:= 150;
  Image1.Height:= 150;

  Kreis4Farben(Image1.Canvas, 20,20, 100);
end;
EDIT:
Eventuell reicht dir Pie() ja auch schon:
Delphi-Quellcode:
procedure Kreis4Farben(cav: TCanvas; iLeft, iTop, DMesser: integer);
var
  PTemp: TPoint;
  Halb: integer;
begin
  Halb := DMesser div 2;
  with cav do
  begin
    GetViewportOrgEx(Handle, PTemp);
    SetViewportOrgEx(Handle,iLeft, iTop, nil);

    Pen.Color:= clRed;
    Brush.Color := clRed;
    Pie(0, 0, DMesser, DMesser, DMesser, Halb, Halb, 0);

    Pen.Color:= clYellow;
    Brush.Color := clYellow;
    Pie(0, 0, DMesser, DMesser, Halb, 0, 0, Halb);

    Pen.Color := clGreen;
    Brush.Color := clGreen;
    Pie(0, 0, DMesser, DMesser, 0, Halb, Halb, DMesser);

    Pen.Color := clAqua;
    Brush.Color:= clAqua;
    Pie(0, 0, DMesser, DMesser, Halb, DMesser, DMesser, Halb);

    SetViewportOrgEx(Handle, PTemp.X, PTemp.Y, nil);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Width:= 150;
  Image1.Height:= 150;

  Kreis4Farben(Image1.Canvas, 20, 20, 101);
end;
Miniaturansicht angehängter Grafiken
kreis_130.png  
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat