AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit Sinus Darstellung

Ein Thema von Chris211183 · begonnen am 24. Feb 2015 · letzter Beitrag vom 4. Mär 2015
Antwort Antwort
Seite 7 von 8   « Erste     567 8      
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#61

AW: Probleme mit Sinus Darstellung

  Alt 3. Mär 2015, 11:35
In Delphi 6 braucht sin Compiler-Magic und wäre auch sonst inkomptatibel, die Hilfe nennt die Deklaration
function Sin(X: Extended): Extended; Die einfachste Möglichkeit, die Sache versionsunabhängig zum Laufen zu bringen, ist eine Wrapper-Funktion
Delphi-Quellcode:
function mysin(const x: Extended): Extended;
begin
  mysin := sin(x);
end;
mit dem Aufruf
CalculatePointView(mysin, R, x0, y0, dx, dy);
  Mit Zitat antworten Zitat
Chris211183

Registriert seit: 19. Sep 2013
Ort: Braunschweig
204 Beiträge
 
Delphi 6 Professional
 
#62

AW: Probleme mit Sinus Darstellung

  Alt 3. Mär 2015, 12:23
Ja gerne...



Delphi-Quellcode:
unit HixHistograph;

interface

uses
  Windows, SysUtils, Classes, Controls, Graphics, StdCtrls, Variants, Forms,
  Dialogs, Math, ExtCtrls, Types, Scales;

type
   TFxFunction = function(const x: Extended): Extended;
   TPointDynArray = array of TPoint;

   THixHistoGraph = class(TCustomPanel)


procedure DrawFunction;
procedure SetColorZeroLine(const Value: TColor);
procedure DrawPointView(ACanvas: TCanvas; const ARect: TRect; const APoints : TPointDynArray);
function CalculatePointView(AFunc: TFxFunction; const ARect: TRect; x0, y0, dx, dy: Extended): TPointDynArray;



procedure THixHistoGraph.Paint;
begin
  inherited;
  FBmp.Width := Width;
  FBmp.Height := Height;

  with FBmp.Canvas do
  begin
  DrawComponent; // zeichnet Komponente mit Hintergrund
  DrawGrid; // zeichnet Hintergrundraster
  //DrawZeroLine; // Nullliniendurchgang
  DrawFunction;
  end;
end;


function THixHistoGraph.CalculatePointView
(AFunc: TFxFunction; const ARect: TRect; x0, y0, dx, dy: Extended): TPointDynArray;
var
  x, y: Extended;
  i : integer;
begin // für jede Spalte einen Punkt
   SetLength(Result, ARect.Right - ARect.Left +1); // Punkte berechnen
   x := x0;
   for i := Low(Result) to High(Result) do
   begin
   y := AFunc(x);
   y := -y; // Canvas Nullpunkt obere linke Ecke mit Y- Achse nach unten !!!
   y := y0 + y; // oberen Rand Addieren
   y := y / dy; // Skalieren
   Result[i].x := ARect.Left +1;
   Result[i].Y := ARect.Top + Round(y); // runden
   x := x + dx;
   end; // nächster Punkt
end;

procedure THixHistoGraph.DrawPointView
(ACanvas: TCanvas; const ARect: TRect; const APoints : TPointDynArray);
var
   h : Thandle;
   begin
   h:= SaveDC(ACanvas.Handle);
   try
   IntersectClipRect(ACanvas.Handle, ARect.Left, ARect.Top, ARect.Right, ARect.Bottom);
   Polyline(ACanvas.Handle, APoints[0], Length(APoints));
   finally
      RestoreDC(ACanvas.Handle, h);
   end;
end;

procedure THixHistoGraph.DrawFunction;
var
  R :TRect;
  x0, y0, dx, dy :Extended;
  P: TPointDynArray;
  begin
   R := Rect (FGapLeft,
              FGapTop,
              Width - FGapRight + 2,
              Height - FGapBottom);

   Canvas.Brush.Color := FHistoBkColor;
   Canvas.Pen.Color := FHistoBkColor;
   Canvas.Pen.Style := psSolid;
   Canvas.FillRect(R);
   InflateRect(R, -1, -1);
   x0 := FXScale.ValMin;
   y0 := FYScale.ValMax;
   dx := 0.05;
   dy := 0.05;
   P := CalculatePointView(@System.sin, R, x0, y0, dx, dy);
   Canvas.Pen.Color := cllime;
   DrawPointView(Canvas, R, P);
end;

end.
Christian
  Mit Zitat antworten Zitat
Chris211183

Registriert seit: 19. Sep 2013
Ort: Braunschweig
204 Beiträge
 
Delphi 6 Professional
 
#63

AW: Probleme mit Sinus Darstellung

  Alt 3. Mär 2015, 12:34
jetzttttttttt...................... es klappt mit der Wrapper Funktion !!!

Das war ne Geburt Jungs !!!

Besten dank an alle !!!
Woher soll man denn sowas auch wisssen ????
Christian
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#64

AW: Probleme mit Sinus Darstellung

  Alt 3. Mär 2015, 12:35
Aus der Online-Hilfe
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Chris211183

Registriert seit: 19. Sep 2013
Ort: Braunschweig
204 Beiträge
 
Delphi 6 Professional
 
#65

AW: Probleme mit Sinus Darstellung

  Alt 3. Mär 2015, 12:55
Die ich nicht habe , mein Programmierrechner ist nicht im Netz !
Christian
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#66

AW: Probleme mit Sinus Darstellung

  Alt 3. Mär 2015, 12:57
Ich meinte die, die bei F1 aufgeht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Chris211183

Registriert seit: 19. Sep 2013
Ort: Braunschweig
204 Beiträge
 
Delphi 6 Professional
 
#67

AW: Probleme mit Sinus Darstellung

  Alt 3. Mär 2015, 12:59
benutz ich oft, das muss mir durch die Lappen gegangen sein

gehe mir jetzt die Hände bügeln !
Christian
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#68

AW: Probleme mit Sinus Darstellung

  Alt 3. Mär 2015, 13:31
Wegen der Wellen könnte man sich noch überlegen der Komponente einen Timer zu spendieren? Und du möchtest doch sicherlich irgendwann mal was anderes grafisch darstellen als Sin(X). Dazu braucht die Komponente einen Parser. Falls du über keinen Matheparser verfügst, für's erste reicht auch der Parser10 von der Emba Homepage oder auch (in einer älteren Version) frei im Netz. Dann kann der User die f(x) z.B. in einem Edit angeben.
  Mit Zitat antworten Zitat
Chris211183

Registriert seit: 19. Sep 2013
Ort: Braunschweig
204 Beiträge
 
Delphi 6 Professional
 
#69

AW: Probleme mit Sinus Darstellung

  Alt 4. Mär 2015, 10:21
Wegen der Wellen könnte man sich noch überlegen der Komponente einen Timer zu spendieren? Und du möchtest doch sicherlich irgendwann mal was anderes grafisch darstellen als Sin(X). Dazu braucht die Komponente einen Parser. Falls du über keinen Matheparser verfügst, für's erste reicht auch der Parser10 von der Emba Homepage oder auch (in einer älteren Version) frei im Netz. Dann kann der User die f(x) z.B. in einem Edit angeben.
Super Idee Bjoerk, das klingt logisch und das werde ich gleich mal ausprobieren !

Für so einen Parser habe ich http://kilchb.de/parser.html den hier gefunden !
Christian
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#70

AW: Probleme mit Sinus Darstellung

  Alt 4. Mär 2015, 12:35
Ich weiß nicht, vielleicht ist es auch bei Deinem Projekt von Vorteil, wenn Du erst überlegst was am Ende herauskommen soll, und dann mit der Umsetzung anfängst (?). Ich kann mir das Arbeiten nicht mehr anders vorstellen. Früher hab ich natürlich auch direkt mit Einhacken angefangen .

lg Caps
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 7 von 8   « Erste     567 8      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:34 Uhr.
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