![]() |
TPlotgrid zeichnet Strich in Polygon
Liste der Anhänge anzeigen (Anzahl: 1)
Ich zeichne streng nach dieser Anleitung Sinus und Cosinus Polygone:
![]() Daber erhalte ich aber nicht die im Link angezeigte Grafik sondern jeweils einen zusätzlichen Strich, der Anfang und Ende der Kurven verbindet, siehe screenshot. Ist das ein Bug oder kann man den Balken irgendwie loswerden? Gibt es zudem eine Möglichkeit, das Gitter komplett auszublenden, also nur die Kurven anzuzeigen? Ich verwende 10.3.2 Community. |
AW: TPlotgrid zeichnet Strich in Polygon
Zitat:
![]() |
AW: TPlotgrid zeichnet Strich in Polygon
... das hatte ich gesehen aber ich habe das Beispiel wirklich 1:1 umgesetzt. Dort gibt es aber KEINE Linie.
? |
AW: TPlotgrid zeichnet Strich in Polygon
Vielleicht ist das Bild falsch ?
Polygon ist für mich erstmal geschlossen, PolyLine wäre da besser. Wenn der Canvas das Polyline nicht anbietet würde ich TPath verwenden ![]() Das setzt ich an allen möglichen Stellen ein und ist sehr flexibel. |
AW: TPlotgrid zeichnet Strich in Polygon
Zitat:
|
AW: TPlotgrid zeichnet Strich in Polygon
Zitat:
|
AW: TPlotgrid zeichnet Strich in Polygon
... hat jemand vielleicht ein Sourcebeispiel für die Darstellung einer Sinuskurve mit Polyline?
Schreibe sonst nur Datenanwendungen und bin "zeichnerisch" völlig unbeleckt. Mit der Sinuskurve soll der aktuelle Wasserstand innerhalb eine Gezeit (Tide) anschaulich gemacht werden. |
AW: TPlotgrid zeichnet Strich in Polygon
Liste der Anhänge anzeigen (Anzahl: 1)
Das PlotGrid ist ein interessantes Thema, damit habe ich mich bislang noch nicht beschäftigt,
dankesehr für den Anstoss. Deshalb habe ich mal schnell versucht das Emba-Sample auf PathData umzustellen, wie vorgeschlagen. Ich habe das hier per Data als String gemacht, ist natürlich nicht optimal durch die Format-Konvertierungen, hat aber den Charme das man auch einfach mal andere SVG Kurven da mal reinwerfen könnte. TPath kann alles mögliche malen, und das mit Kurven, Bezier, etc. |
AW: TPlotgrid zeichnet Strich in Polygon
... SUPER - danke Rollo!!!
Funktioniert exakt wie gewünscht :-D |
AW: TPlotgrid zeichnet Strich in Polygon
Leider wird der Path in D11 (in Android) wieder durch den Strich geschlossen :-(
![]() Hat jemand eine Idee, wie Rollos obiger T289_Plotgrid Code angepasst werden kann? Rollo hatte im Sample Code ( ![]() Das hat bis D10 funktioniert. Hier der zentrale Code (nur Cosinus):
Code:
procedure TForm1.CalculateCos;
var I : Integer; LPt: TPointF; LStr: string; begin FPathData.Clear; SetParams; SetLength(FPoints, Resolution); // Alloc space for number of points to be calculated // First point moveto LPt := PointF( Origin.x + Radian * xPixels / Pi, Origin.y - cos(Radian) * yPixels ); LStr := LStr + 'M' + Format('%1.2f', [LPt.X], FFormatSettings) + ', ' + Format('%1.2f', [LPt.Y], FFormatSettings) ; Radian := Radian + Interval; // Set next point for I := 1 to High(FPoints) do begin LPt := PointF( Origin.x + Radian * xPixels / Pi, Origin.y - cos(Radian) * yPixels ); LStr := LStr + 'L' + Format('%1.2f', [LPt.X], FFormatSettings) + ', ' + Format('%1.2f', [LPt.Y], FFormatSettings) ; Radian := Radian + Interval; // Set next point end; LStr := LStr + 'M0 0'; LStr := LStr + 'Z'; FPathData.Data := LStr; end; procedure TForm1.SetParams; begin Resolution := 200; // Set resolution to 200 points Radian := -2.0 * Pi; // Start angle at -2Pi xPixels := PlotGrid.Width / 4; // Contain graph width within a quarter of the grid width (actually half because of neg values) yPixels := PlotGrid.Height / 4; // Contain graph height within a quarter of the grid height (actually half because of neg values) Origin := PointF(PlotGrid.Width / 2, // Calculate the center point of the plot grid PlotGrid.Height / 2); Interval := 4.0 * Pi / Resolution; // Set interval between two points in which function values are calculated end; procedure TForm1.PlotGridPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); begin PlotGrid.Canvas.Stroke.Thickness := 3; // Set stroke thickness CalculateCos; PlotGrid.Canvas.Stroke.Color := TAlphaColorRec.Blue; // Set color for cos to blue PlotGrid.Canvas.DrawPath( FPathData, 1.0 ); // DrawPolygon(FPoints, 1); // Draw cos graph end; |
AW: TPlotgrid zeichnet Strich in Polygon
... hier die Lösung, aus
![]() :-)
Code:
var
FPoints: TPolygon; procedure TfMain.CalculateCos; var i: Integer; begin SetLength(FPoints, Resolution + 1); // Alloc space for number of points to be calculated SetParams; for i := 0 to High(FPoints) do begin FPoints[i].X := Origin.X + Radian * xPixels / Pi; // Calculate X value with scaling FPoints[i].Y := Origin.Y - cos(Radian) * yPixels; // Calculate Y value (f(X)) with scaling Radian := Radian + Interval; // Set next point end; end; procedure TfMain.PlotGridPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); var i: Integer; begin PlotGrid.Canvas.Stroke.Thickness := 2; // Liniendicke CalculateCos; // hier nur Cosinus PlotGrid.Canvas.Stroke.Color := TAlphaColorRec.White; for i := 1 to High(FPoints) do PlotGrid.Canvas.DrawLine(FPoints[i - 1], FPoints[i], 1); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:10 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 by Thomas Breitkreuz