Delphi-PRAXiS
Seite 1 von 8  1 23     Letzte »    

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/)
-   -   Probleme mit Sinus Darstellung (https://www.delphipraxis.net/184076-probleme-mit-sinus-darstellung.html)

Chris211183 24. Feb 2015 09:18

Probleme mit Sinus Darstellung
 
Hallo DP´ler,

ich möchte einen SinusGraphen auf meiner Komponentenoberfläche anzeigen lassen. Bekomme das aber absolut nicht hin. Die Mathematik ist hier nicht das Problem, sondern die Programmierung.

Brauche denfinitiv Hilfe und es wäre toll, wenn sich jemand erbarmen würde :gruebel:

Delphi-Quellcode:
procedure THixHistoGraph.DrawGridScale;

var
a, b, c, d, x1, x2 , fvonx1, fvonx2  : Real;
i: Integer;                                                                      

begin

   a := FXScale.ValMin;                              // Null (0/0) von X- und Y- Koordinate
   b := FXScale.ValMax;                              // Width
   c := FYScale.ValMin;                              // Anfang der Y-Achse
   d := FYScale.ValMax;                              // Ende Der Y-Achse
   x1 := ViewXNominalMin;                             // Punkt, von wo aus gezeichnet werden soll
   x2 := ViewXNominalMax;                             // Punkt, bis wohin gezeichnet werden soll


   for i := 0 to Round(2*pi/0.2) do
   begin
   fvonx1 := (Width div (b-a)) + x1* ((a*Width) div (a-b));     // Funktionswert an der Stelle x1
   fvonx2 := (Height div (d-c)) + x2* ((c*Height)div (c-d));   // Funktionswert an der Stelle x2
   end;

  with FBmp.Canvas do
  begin
  //canvas.MoveTo(fvonx1, d);

  end;

end;

DeddyH 24. Feb 2015 09:23

AW: Probleme mit Sinus Darstellung
 
Die For-Schleife ist sinnbefreit, da mit den errechneten Werten nichts gemacht wird. Ansonsten: ich bin nicht so der Mathe-Crack, aber ich denke, Du suchst so etwas wie Hier im Forum suchenBezierkurven.

Chris211183 24. Feb 2015 09:29

AW: Probleme mit Sinus Darstellung
 
Ja, die ist noch aus dem Probiervorgängen der letzten Tage drin !

Ich guck mir das mal mit den Beziers an.

Chris211183 24. Feb 2015 10:05

AW: Probleme mit Sinus Darstellung
 
Also Beziers benötige ich nicht....

den Funktionswert von X2 benötige ich auch nicht, er soll einfach von einem erstmal beliebigen Punkt, bis zum ende einen Sinus zeichnen, das ist das Problem, die Parametrisierung kann ich selber machen

Das kann doch nicht so schwer sein:oops:

glaub der Fehler liegt bei mir zwischen den Ohren...

oder über nen Array....., ich geh hier bald krachen:evil::wall:

Headbucket 24. Feb 2015 10:08

AW: Probleme mit Sinus Darstellung
 
Hey,

hier mal ein kleines Beispiel. Auf deinem Form sollte bereits ein "TImage" namens "Image1" liegen. Dann folgende Prozedur aufrufen.

Delphi-Quellcode:
procedure TForm1.DrawWaveForm;
var
  Bitmap: TBitmap;
  i, Start: integer;
begin
  Bitmap := TBitmap.Create;
  Bitmap.Width := Image1.Width;
  Bitmap.Height := Image1.Height;
  Bitmap.Canvas.Brush.Color := clMaroon;
  Bitmap.Canvas.Fillrect(Image1.Canvas.ClipRect);
  Bitmap.Transparent := true;
  Bitmap.TransparentColor := clMaroon;
  Bitmap.Canvas.Pen.Color := clBlack;
  Bitmap.Canvas.Pen.Width := 1;
  Start := Image1.Height div 2; //Sinuskurve im Nulldurchgang beginnen -> In der Mitte

  Bitmap.Canvas.MoveTo(0, Start);
  for i := 0 to Image1.Width - 1 do
    Bitmap.Canvas.LineTo(i, Start - Trunc(Start * sin(2*pi*(1/Image1.Width)*i)));
 
  Image1.Transparent := true;
  Image1.Picture.Assign(Bitmap);
  Bitmap.Free;
end;
Grüße
Headbucket

Chris211183 25. Feb 2015 08:59

AW: Probleme mit Sinus Darstellung
 
Danke für eure Antworten, ich habe nen kompletten Denkfehler gemacht !

Im Prinzip sollen ja Messwerte visuell als Kurve dargestellt werden, also brauch ich wohl nen Array.
Wie stellt man sowas an ? Wie lässt man einen Array dann zeichnen :gruebel:

Google habe ich bereits gequält und das Forum ebenso, aber so richtig was finde ich nicht darüber.

Headbucket 25. Feb 2015 09:26

AW: Probleme mit Sinus Darstellung
 
Also irgendwie verstehe ich nicht, wo aktuell das Problem liegt bzw. was du überhaupt GENAU machen möchtest.
Kannst du das vllt nochmal genauer beschreiben?

Zum Zeichnen kann man das Canvas-Objekt verwenden. Dazu solltest du reichlich informationen über Google finden.
Ein Beispiel zum Zeichnen einer Sinusfunktion (eine Periode) habe ich dir bereits gegeben. Hast du dir das Beispiel angeschaut? Gibt es dazu fragen?
Wenn du das Beispiel verstehst sollte doch alles klar sein?

Mit Canvas.LineTo(X, Y) zeichnest du eine Linie von der aktuellen Position zum Punkt X,Y. Die aktuelle Position änderst du mit Canvas.MoveTo(X, Y).
Genau das habe ich in meinem Beispiel auch gemacht.
Zunächst die Position auf den Nullpunkt gelegt und danach für alle X-Werte den Y-Wert berechnet und gezeichnet.

Natürlich kannst du die X- und Y-Werte auch vorher berechnen und in ein Array schmeißen. Dann musst du lediglich über eine Schleife die Werte aus den Array auslesen und mit LineTo zeichnen.

Grüße
Headbucket

Chris211183 25. Feb 2015 09:58

AW: Probleme mit Sinus Darstellung
 
Hi,

das zeichnen an sich ist kein Problem, über canvas habe ich ja meine Komponente gezeichnet.

Ich möchte jediglich mit meiner Komponente später Messwerte (wie ein Oszilloskop) anzeigen lassen.
Jetzt geht es mir darum, wie man das am besten und wie programmiert, damit diese das auch später macht.
Ich bin nur Hobbyprogrammierer und bin daher nicht so fit in den Dingen, bring mir das alles selbst bei und daher auch manchmal so wirre und "dusselige" Fragen !

:cheers::cheers:

DeddyH 25. Feb 2015 10:05

AW: Probleme mit Sinus Darstellung
 
Hier z.B. werden die Punkte zunächst errechnet, in einem Array gespeichert und dann mit TCanvas.PolyLine in einem Rutsch gezeichnet.

Chris211183 25. Feb 2015 10:10

AW: Probleme mit Sinus Darstellung
 
Genau sowas habe ich gesucht !!! Super Klasse, danke euch für eure Mühe !!!:thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:24 Uhr.
Seite 1 von 8  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz