Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TPlotgrid zeichnet Strich in Polygon (https://www.delphipraxis.net/201727-tplotgrid-zeichnet-strich-polygon.html)

Stewag 20. Aug 2019 18:26

TPlotgrid zeichnet Strich in Polygon
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich zeichne streng nach dieser Anleitung Sinus und Cosinus Polygone:
http://docwiki.embarcadero.com/CodeE...tGrid_(Delphi)

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.

Rollo62 20. Aug 2019 20:16

AW: TPlotgrid zeichnet Strich in Polygon
 
Zitat:

Note: If the first point and the last point of the Points array do not coincide, DrawPolygon automatically connects the first and the last point and closes the polygon.
http://docwiki.embarcadero.com/Libra...as.DrawPolygon

Stewag 20. Aug 2019 20:42

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.
?

Rollo62 21. Aug 2019 08:01

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
http://docwiki.embarcadero.com/Libra...#Code_Examples

Das setzt ich an allen möglichen Stellen ein und ist sehr flexibel.

Uwe Raabe 21. Aug 2019 10:08

AW: TPlotgrid zeichnet Strich in Polygon
 
Zitat:

Zitat von Stewag (Beitrag 1442302)

OT: Was bewegt den Author dieses Beispiels nur dazu, globale Variablen zu verwenden? :wall:

haentschman 21. Aug 2019 11:50

AW: TPlotgrid zeichnet Strich in Polygon
 
Zitat:

OT: Was bewegt den Author dieses Beispiels nur dazu, globale Variablen zu verwenden?
:lol: ...das ist wie mit dem WITH. :stupid: Manche machens, obwohl es eigentlich "abgekündigt" ist. :wink:

Stewag 21. Aug 2019 18:04

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.

Rollo62 22. Aug 2019 08:31

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.

Stewag 22. Aug 2019 11:30

AW: TPlotgrid zeichnet Strich in Polygon
 
... SUPER - danke Rollo!!!

Funktioniert exakt wie gewünscht :-D

Stewag 11. Okt 2022 18:09

AW: TPlotgrid zeichnet Strich in Polygon
 
Leider wird der Path in D11 (in Android) wieder durch den Strich geschlossen :-(
https://www.swiftease.de/download/Sc...011-221811.PNG

Hat jemand eine Idee, wie Rollos obiger T289_Plotgrid Code angepasst werden kann?

Rollo hatte im Sample Code (https://docwiki.embarcadero.com/Code...tGrid_(Delphi))) das Polygon durch einen Pfad ersetzt.
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;


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:15 Uhr.
Seite 1 von 2  1 2      

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