Hallo liebe Gemeinde,
ich versuche derzeit eine plattformübergreifende Anwendung mit Delphi zu schreiben. (
RAD Studio)
Diese soll eine Kurve darstellen, dazu nun 3 Fragen.
1. Wieso wird bei mir nach dem Zeichnen der Kurve noch eine Linie vom letzten zum ersten Punkt gezeichnet.
2. Weiß jemand ob es (speziell Andorid) möglich ist, in einer gezeichneten Funktion auf einem PlotGrid die Zoomfunktion zu nutzen? Habe eine GestureManger hinzugefügt und Zoomen aktiviert, Zoomt aber nix :/
3. Ich habe versucht über den Timer die Kurve "punktweise" zeichnen zu lassen, also so, dass ein Graph wächst quasi (schlecht zu umschreiben).
Kann mir vielleicht jemand helfen
Ich hänge mal den von
Rad Studio (aus einem Tutorial) vorgefertigten Code mit an.
Vielen Dank schon einmal für eure Mühe.
Code:
procedure TForm1.SetParams;
begin
Resolution := 200; // Set resolution to 200 points
Radian := -2.0 * Pi; // Start angle at -2Pi
xPixels := PlotGrid1.Width / 4; // Contain graph width within a quarter of the grid width (actually half because of neg values)
yPixels := PlotGrid1.Height / 4; // Contain graph height within a quarter of the grid height (actually half because of neg values)
Origin := PointF(PlotGrid1.Width / 2, // Calculate the center point of the plot grid
PlotGrid1.Height / 2);
Interval := 4.0 * Pi / Resolution; // Set interval between two points in which function values are calculated
end;
procedure TForm1.CalculateSin;
var
I: Integer;
begin
SetLength(FPoints, Resolution); // 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 - sin(Radian) * yPixels; // Calculate Y value (f(X)) with scaling
Radian := Radian + Interval; // Set next point
end;
end;
procedure TForm1.PlotGridPaint(Sender: TObject; Canvas: TCanvas;
const ARect: TRectF);
begin
plotgrid1.Frequency:=1000;
PlotGrid1.Canvas.StrokeThickness := 1; // Set stroke thickness
CalculateSin; // Calculate and scale X and sin(X) values and save them in FPoints
PlotGrid1.Canvas.Stroke.Color := TAlphaColorRec.Red; // Set color for sin to red
PlotGrid1.Canvas.DrawPolygon(FPoints, 1); // Draw sin graph
end;