Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
20. Feb 2009
@Thomas:
hätt ja beinah vergessen ... dein 1/4-Tür-Kreis wäre:
TSimpleCanvas({DeinCanvas}PaintBox1.Canvas).Arc({X}165, {Y}85, {D}150, -PI/2, 0);
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
20. Feb 2009
hab oben noch etwas geändert .. siehe in #18
Dann gibt's ein "nettes" Problem bei zu großen Pfeilen und zu kleinen Radien.
Mein erster Gedanke war zwar einfach den Endpunkt der Linie (welcher ja derzeit in der Pfeilspitze liegt) einfach auf das Pfeilende zu verschieben, aber so einfach ist das garnicht, da sich dan unter umständen die Linie umkehren kann (in der falschen Richtung verläuft)
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
20. Feb 2009
Das mit den Pfeilen sieht jetzt erstma "hübsch" aus.
Also könnt ihr gern mal nachsehn ob es so in Ordnung geht.
(die Pfeile sind zwar nicht Pixelgenau so groß, wie man es angibt, aber es solle dennoch halbwegs gleichmäßig aussehn :angel2: )
Und dann hab ich die Klasse etwas umbenannt.
aktuelle Funktionen wären:
Type TSimpleCanvas = Class(TCanvas)
Public
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
19. Feb 2009
OK, hab mal das mit dem 1 Pixel ala Cyf geändert
und noch ein 'ne "neue" Funktion hinzugefügt.
ist euch dabei schonmal aufgefallen, daß MoveTo das letze Pixel nur wegläßt, wenn Pen.Width = 1 ist?
Das mit den Pfeilen für Pfeil am Ende eines Bogens zeichnen? funktioniert bei Kreisen schonmal.
Bei Ellipsen hab ich noch "kleine" Probleme :oops:
siehe Tangente an einer Ellipse berechnen?
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
19. Feb 2009
na zum Glück hab ich das Beispiel-Cödelen nicht als Fertig ausgepriesen :mrgreen:
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
19. Feb 2009
OK, da die Punkte zufällig auf Dem Kreis liegen, kommt's hier mal auf's Gleiche raus,
aber
10, 10, 150, 150, 80, -70, 200, 80
bzw.
10, 10, 150, 150, 80, 50, 110, 80
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
19. Feb 2009
hab hier mal schnell was zusammengetippt
Übernimmt den Mittelpunkt, Durchmesser (Diameter), sowie den Start- und Endwinkel im Bogenmaß.
Type TCanvasEx = Class(TCanvas)
Public
Procedure Arc (X, Y, D: Integer; S, E: Single); Overload;
Procedure Arc (X, Y, Dh, Dv: Integer; S, E: Single); Overload;
Procedure Chord (X, Y, D: Integer; S, E: Single); Overload;
...
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
19. Feb 2009
siehe Arc
Canvas.Arc(
{Rechteck=}10,20,150,160,
{Sehne 1=10:150,20:50,}150,80,
{Sehne 2=10:150,20:50,}80,10
);
// a:b = Mittelpunkt zwischen a und b,
// also 10:150,20:50 = Mittelpunkt des Rechtecks um die Ellipse