![]() |
Re: Kreis in Vier teile einteilen ?
ICH HABE ES.
ich habe den code einfach etwas geändert:
Delphi-Quellcode:
Ich hatte die MoveTo, lineTo nicht gesehen beim ersten mal
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; Vielen Dank für eure Hilfe ! ich wollte jetzt die Fläche inerhalbt des Kreises füllen mit FloodFill(ileft div 2, iTop div 2, clBtnFace, fsBorder); aber irgendwie geht das nicht.... ich wollte einfach den Mittelpunkt berechnen. ach ja die FloodFill Procedure wird ganz zum Schluss auf gerufen edit00 ich habe den code in meiner GUI eingebaut:
Delphi-Quellcode:
und weiter angepasst. allerdings ist der Code leider zu langsam :(
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 Pen.Color:= clRed; Arc(iLeft, iTop, DMesser, DMesser, DMesser, Halb, Halb, 0); Pen.Color:= clYellow; Arc(iLeft, iTop, DMesser, DMesser, Halb, 0, 0, Halb); Pen.Color := clGreen; Arc(iLeft, iTop, DMesser, DMesser, 0, Halb, Halb, DMesser); Pen.Color := clAqua; Arc(iLeft, iTop, DMesser, DMesser, Halb, DMesser, DMesser, Halb); end; end; procedure TmyShape.DrawKreis; var r:TRect; begin r.left:=rx; r.top:=ry; r.Right:=r.left+rw; r.Bottom:=(r.Top+rh); // Kreis4Farben(fcanvas,r.left,r.top,10); fcanvas.Ellipse(r); fcanvas.Pen.Assign(pen); Kreis4Farben(fcanvas,rx,ry,10); end; bzw. es passiert nicht das was im Demo Programm passiert. Da geht es nämlich genau so . auf der Linken Bildschirmseite werden 2 lange Blikende Llinen angezeigt ersetzt ich Kreis4Farben durch Elepsse geht es allerdings ohne die 4 farben ! |
Re: Kreis in Vier teile einteilen ?
Liste der Anhänge anzeigen (Anzahl: 1)
Im Demo Programm passiert leider das gleiche. Wenn ich den Code mehrmals aufrufe.
Im Anhang gibt es ein Bild ! Gut ich weiß jetzt wie es geht: ich muss ileft + dMesser nehmen dann scheint es zu gehen Edit00 Geht leider doch nicht ! :( |
Re: Kreis in Vier teile einteilen ?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
keine Ahnung warum es bei dir nicht funktioniert, aber in Delphi geht es so:
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); cav.Ellipse(0, 0, DMesser, DMesser); Brush.Color := clSilver; FloodFill(Halb, Halb, Pen.Color, fsBorder); Pen.Color:= clRed; Arc(0, 0, DMesser, DMesser, DMesser, Halb, Halb, 0); Pen.Color:= clYellow; Arc(0, 0, DMesser, DMesser, Halb, 0, 0, Halb); Pen.Color := clGreen; Arc(0, 0, DMesser, DMesser, 0, Halb, Halb, DMesser); Pen.Color := clAqua; Arc(0, 0, DMesser, DMesser, Halb, DMesser, DMesser, Halb); //SetViewportOrgEx(Handle, PTemp.X, PTemp.Y, nil); end; end; procedure TForm1.Button1Click(Sender: TObject); begin Kreis4Farben(image1.Canvas,0, 0, 120); end; |
Re: Kreis in Vier teile einteilen ?
naja es geht ja auch, nur ich möchte die Positions angaben anders haben.
bei 0,0 geht es. nur möchte ich den Kreis auch wo anders angezeigt bekommen ! z.b. an x:20,y:40 |
Re: Kreis in Vier teile einteilen ?
So jetzt schön kompliziert da ohne ViewportOrgEx.
Delphi-Quellcode:
EDIT: Es geht auch ohne FloodFill().
procedure Kreis4Farben(cav: TCanvas; iLeft, iTop, DMesser: integer);
var Halb: integer; begin Halb := DMesser div 2; with cav do begin Brush.Color := clSilver; Ellipse(iLeft, iTop, iLeft + DMesser, iTop + DMesser); Pen.Color := clRed; Arc(iLeft, iTop, iLeft + DMesser, iTop + DMesser, iLeft + DMesser, iTop + Halb, iLeft + Halb, iTop); Pen.Color := clYellow; Arc(iLeft, iTop, iLeft + DMesser, iTop + DMesser, iLeft + Halb, iTop, iLeft, iTop + Halb); Pen.Color := clGreen; Arc(iLeft, iTop, iLeft + DMesser, iTop + DMesser, iLeft, iTop + Halb,iLeft + Halb, iTop + DMesser); Pen.Color := clAqua; Arc(iLeft, iTop, iLeft + DMesser, iTop + DMesser, iLeft + Halb, iTop + DMesser, iLeft + DMesser, iTop + Halb); end; end; procedure TForm1.Button1Click(Sender: TObject); begin Kreis4Farben(image1.Canvas,10, 30, 120); //Kreis4Farben(image1.Canvas,40, 80, 120); end; |
Re: Kreis in Vier teile einteilen ?
Vielen Dank für deine Mühe.
jetzt habe ich nur noch eine Frage: Wie kann ich den Radius mit Größen angeben berechnen ? also ich habe ein Trect und aus diesem Trect soll er eine 4FarbenKreis erzeugen Und nochmals VIELEN DANK !!!! Du wirst in meinem Projekt auch namentlich erwähnt ! |
Re: Kreis in Vier teile einteilen ?
Hö? Was meinst Du denn jetzt? Radius = (Rect.Right - Rect.Left) div 2
|
Re: Kreis in Vier teile einteilen ?
ich meine den wert für DMess.
|
Re: Kreis in Vier teile einteilen ?
Delphi-Quellcode:
Durchmesser:= Rect.Right - Rect.Left;
|
Re: Kreis in Vier teile einteilen ?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz