Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Programm zum zeichnen von 2 Graphen (https://www.delphipraxis.net/127661-programm-zum-zeichnen-von-2-graphen.html)

taker875 16. Jan 2009 21:01


Programm zum zeichnen von 2 Graphen
 
Moin,

habe da nen Problem.
das programm zeichnet beide graphen, aber verbindet diese auch, sprich füllt die fläche zwischen diesen aus? Oo wenn ich die procedure des einen graphen raus nehme zeichnet er auch richtig füllt keine fläche aus.

Das zeichnen des 1. Graphen:
Delphi-Quellcode:
Form1.Bild.Canvas.LineTo(xb,yb);
Das zeichnen des 2. Graphen:
Delphi-Quellcode:
Form1.Bild.Canvas.LineTo(xb2,yb2);
Warum kommt er jetzt daraus diese beiden Graphen zu verbinden? Ich verstehe es einfach nicht.

Bitte helft mir
Danke

taker875 16. Jan 2009 21:30

Re: Programm zum zeichnen von 2 Graphen
 
um es nochmal genauer zu machen:

Zeichnen des 1. Graphen:
Delphi-Quellcode:
procedure zeichnenGraph;
var defi,defivorher : boolean;
    xvorher,yvorher : double;
begin
xvorher := (xb-x0)/(xEins-x0);
yvorher:=funktion(x,defivorher);
x  := (xb-x0)/(xEins-x0);
y :=Funktion(x,defi);
yB := Round(y*(yEins-y0)+y0);
if y <> 0 then
if xB = 0
 then Form1.Bild.Canvas.MoveTo(xb,yb)
 else
  begin
  x := ((xb-1)-x0)/(xEins-x0);
  if defi and not ((y>10*index) or (y<-10*index) ) then
    begin
    Form1.Bild.Canvas.LineTo(xb,yb);
    end
   else
    begin
    xb := xb+1;
    x := (xb-x0)/(xEins-x0);
    y :=Funktion(x,defi);
    yB := Round(y*(yEins-y0)+y0);
    Form1.Bild.Canvas.MoveTo(xb,yb)
    end;
  end;
end;
Zeichnen des 2. Graphen:
Delphi-Quellcode:
procedure zeichnenGraph2;
var defi2 : boolean;
begin
x2  := (xb2-x0)/(xEins-x0);
y2 :=Funktion2(x2,defi2);
yB2 := Round(y2*(yEins-y0)+y0);
if y2 <> 0 then
if xB2 = 0
 then Form1.Bild.Canvas.MoveTo(xb2,yb2)
 else
  begin
  x2 := ((xb2-1)-x0)/(xEins-x0);
  if defi2 and not ((y2>10*index) or (y2<-10*index) ) then
    begin
    Form1.Bild.Canvas.LineTo(xb2,yb2);
    end
   else
    begin
    xb2 := xb2+1;
    x2 := (xb2-x0)/(xEins-x0);
    y2 :=Funktion(x2,defi2);
    yB2 := Round(y2*(yEins-y0)+y0);
    Form1.Bild.Canvas.MoveTo(xb,yb);

    end;
  end;
end;

Ich versteh einfach nicht, warum er die beiden verbindet

Edit:
Ok habe mir LineTo nochmal genau angeschaut und das Problem ist, dass er ja immer von der alten PenPos. eine Linie zieht und da ich 2 Graphen gleichzeitig zeichne auf einem image geht das nicht. Ok das habe ich. Wenn man es mit 2 verschiedenen Bildern versucht auf denen man zeichnet, dann geht das zwar flackert aber sehr, mit DoubleBuffered ist das auch nicht zu lösen, da dann der graph auf dem 2. bild , sprich der 2. graph nicht mehr sichtbar ist.

wenn mir da irgendwer nen tipp geben könnte wäre das echt super

omata 16. Jan 2009 21:39

Re: Programm zum zeichnen von 2 Graphen
 
Initialisiere xB und xB2 mal vor jedem Zeichnen mit 0.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 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