![]() |
Halbkreise zeichnen
Hallo erstmal,
ich würde gerne ein "paar" Halbkreise zeichen. Dies kann ich schon wie folgt:
Delphi-Quellcode:
Nur möchte ich jetzt gerne das der halbkreis nicht "oben" in dem Image hängt sondern unten links anfängt.Leider werde ich aus den 8 Parametern nicht so ganz schlau und ich hoffe ihr könnt mir da helfen.Kann man die Dicke (Breite) der Linie noch ändern? Pen.Width vielleicht?
R := Image1.ClientRect;
Image1.Canvas.Arc(R.Left, R.Top, R.Right, R.Bottom, R.Right, R.Top, R.Left, R.Top); MFG Alex |
Re: Halbkreise zeichnen
Heut schon mal F1 gedrückt? :zwinker:
Zitat:
Zitat:
|
Re: Halbkreise zeichnen
Ab Windows NT gibt es die Win32-API-Funktion AngleArc(). Schau dir mal Die Implementation von Canvas.Arc in den VCL-Sourcen an. Dort lernst du wie man mit AngleArc() auf den Canvas malt.
AngleArc() hat sehr viel leichter zu vrstehende Parameter. |
Re: Halbkreise zeichnen
ja habe schon F1 gedrückt :-)
habe es mal mit der AngleArc Funktion versucht.
Delphi-Quellcode:
Aber irgendwie sehe ich trotzdem nichts.Ich fülle vorher das Image nur komplett weiss aus und dann rufe ich die oben geschriebene Funktion auf.
AngleArc(Image1.Parent.Handle,
Image1.Width div 2, Image1.Height div 2, 5, 10, 90); Könnt ihr mir sagen was falsch ist? MFG Alex |
Re: Halbkreise zeichnen
hallo,
ich finde es immer am leichtesten, wenn man einen Kreis zu fuß zeichnet. das kannst du so machen:
Delphi-Quellcode:
PS: Ich hoffe ich konnte Dir ein wenig helfen.
procedure TForm1.Button1Click(Sender: TObject);
var i : TImage; // image zum Anzeigen des Helbkreises mx : Integer; // Mittelpunkt x my : Integer; // mittelpunkt y k : Integer; // Schleifenvariable r : Integer; // Rand; begin i:=Image1; mx:=i.Width div 2; my:=i.Height div 2; r:=20; i.Canvas.MoveTo(mx+r, my); for k:=0 to 180 do begin i.Canvas.LineTo(Round(mx+r*cos(k*Pi/180)), Round(my-r*sin(k*Pi/180))); end; end; Mit freundlichen Grüßen Christian18 |
Re: Halbkreise zeichnen
ja danke konntest mir helfen.
werde auch erstmal so weiterarbeiten mit dem source. wäre aber toll, wenn mir noch jemand sagen könnte was an der AngleArc-Funktion bei mir "falsch" ist?! MFg Alex |
Re: Halbkreise zeichnen
Du übergibst keinen Gerätekontext, sondern ein Fensterhandle. So geht es:
Delphi-Quellcode:
Gruß, teebee
Image2.Canvas.Moveto(Image1.Width Div 2, Image1.Height Div 2); // zum richtigen Startpunkt
AngleArc(Image1.Canvas.Handle, // hier wird ein DC übergeben Image1.Width div 2, Image1.Height div 2, 20, 0, 90); Image1.Canvas.Lineto(Image1.Width Div 2, Image1.Height Div 2); // zum Startpunkt zurück |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 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