Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Wie "alten Graphen" löschen bevor "neuer" gezeichn (https://www.delphipraxis.net/15444-wie-alten-graphen-loeschen-bevor-neuer-gezeichn.html)

Eloare 28. Jan 2004 19:19


Wie "alten Graphen" löschen bevor "neuer"
 
ich habe ein Problem, da ich noch Anfänger mit Delphi bin:

Ich habe eine Anwendung geschrieben die abhängig von Werten die ich eingebe einen Graphen zeichnet.
Nur finde ich nirgends wie ich es verhindern kann dass wenn ich neue Werte eingebe der neue Graph einfach zum alten Graphen "dazugezeichnet" wird, anstelle dessen soll der alte Graph erst gelöscht werden und dann der neue gezeichnet werden.
Ich nehme an dass das für die meisten von euch kein großes Problem sein wird.
In diesem Sinne, schonmal danke.

mfg Eloare

fkerber 28. Jan 2004 19:38

Re: Wie "alten Graphen" löschen bevor "neuer&
 
Hi!

Wo zeichnest du denn den Graph hin und wie?


Ciao fkerber

n00b_on_knees 28. Jan 2004 19:48

Re: Wie "alten Graphen" löschen bevor "neuer&
 
hmm..ich denke dass funktioniert mit

Delphi-Quellcode:
refresh;
natürlich muss man (sofern ich mich erinnern kann), je nachdem wo man es zeichnet, davor schreiben wo es gelöscht werden soll, also bei einer Paintbox:

Delphi-Quellcode:
Paintbox1.Refresh;

Eloare 28. Jan 2004 19:48

Re: Wie "alten Graphen" löschen bevor "neuer&
 
ich poste einfach mal den Code:

Code:
unit Bahnen;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    BerechneButton: TButton;
    Image1: TImage;
    aEdit: TLabeledEdit;
    bEdit: TLabeledEdit;
    Image2: TImage;
    procedure BerechneButtonClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure drawFunc(a,b:real);
var z,x : real;
  begin
  x := 0;
  Repeat
  z:= (x*Pi)/180;
    form1.image1.Canvas.Pixels [trunc(a*100*cos(z))+423,trunc(b*100*sin(z))+353]:= clblack;
   x := x + (1/10);
  Until x > 360;
  end;


procedure gehe_nach( c,d:integer);
  begin
    form1.image1.Canvas.pen.color:=clblack;
    form1.image1.Canvas.pen.width:=1;
    form1.image1.Canvas.moveto(c,d)
end;

procedure linie(e,f:integer);
  begin
    form1.image1.Canvas.pen.color:=clblack;
    form1.image1.Canvas.pen.width:=1;
    form1.image1.Canvas.lineto(e,f);
end;





procedure TForm1.BerechneButtonClick(Sender: TObject);
  var a,b:real;
      c,d,e,f,g,h,i,j:integer;

         


  begin
    Image2.Picture.LoadFromFile('C:\...\erlaeuterung.bmp');
    a:=StrToInt(aedit.text);
    b:=StrToInt(bedit.text);
    c:=trunc((a*(-100))+423);
    d:=trunc(353);
    e:=trunc((a*100)+423);
    f:=trunc(353);
    drawFunc(a,b);
    gehe_nach(c,d);
    linie(e,f);
    g:=trunc(423);
    h:=trunc((b*100)+353);
    i:=trunc(423);
    j:=trunc((b*(-100))+353);
    gehe_nach(g,h);
    linie(i,j)





  end;

end.

dabei is mir auch gleich noch ne Frage gekommen:
Wie kann ich eine Bitmap an spezielle Koordinaten erzeugen (Ort der Bitmap ist vom Graph abhängig)?



mfg Eloare

czapie 28. Jan 2004 20:16

Re: Wie "alten Graphen" löschen bevor "neuer&
 
Hi,
du kannst einfach die Bitmap mit der entsprechenden Hintergrundfrabe übermalen, schau dir dazu canvas an,

Czapie.

Stanlay Hanks 28. Jan 2004 20:29

Re: Wie "alten Graphen" löschen bevor "neuer&
 
Genau. Du speicherst dir einfach die Daten des alten Graphs in irgendeiner Variable und dann änderst du einfach die Pen Farbe und mlast das ganze nochmal. Danach stellst du deine Pen Farbe wieder auf normal und zeichnest den nächsten Graph.

Eloare 28. Jan 2004 20:30

Re: Wie "alten Graphen" löschen bevor "neuer&
 
also des mit dem "refreshen" hab ich jetzt umgangen indem ich einfach meinen Hintergrund (image1) neulade.
Bloß wie ich Bitmaps an von Variablen abhängigen Koordinaten einsetzt, da steh ich immer noch aufm schlauch.


mfg Eloare

Stanlay Hanks 28. Jan 2004 20:34

Re: Wie "alten Graphen" löschen bevor "neuer&
 
Hi. Möchtest du die Bitmaps einfach auf das Canvas zeichnen? Dann schau dir mal die Prozedur "Draw" des Canvas an. Da kannst du die Koordinaten angeben auf die das Bitmap gezeichnet werden soll.

Man liest sich, Stanlay :hi:

Eloare 28. Jan 2004 21:43

Re: Wie "alten Graphen" löschen bevor "neuer&
 
also ich hab versucht die Bitmap folgendermaßen einzubauen:
Code:
Bitmap := TBitmap.create;
Bitmap.LoadFromFile('C:\...\Z.bmp');
canvas.draw(trunc(wurzel(quadrat(a)-quadrat(b)))+433,353,Bitmap);
Er baut die Bitmap zwar ein, aber unter dem Image1, also so das man sie nicht sehen kann.
Ich hab es auch mit versucht "form1.image1.canv..." und "image1.canv..." versucht, ändert allerdings auch nix.
Also, wie krieg ich die Bitmap "nach oben" so das ich sie auch sehe?



mfg Eloare

PS: danke für die bisherigen Antworten, hat mich schon mal weitergebracht

Stanlay Hanks 28. Jan 2004 21:53

Re: Wie "alten Graphen" löschen bevor "neuer&
 
Wenn du nur "Canvas" schreibst, zeichnest du in vielen Fällen einfach auf das Form und nicht auf ein Image. Ein TForm hat nämlich auch ein Canvas. Wenn du statt einfach nur Canvas schreibst:

Delphi-Quellcode:
Image1.Canvas.Draw(...)
Dann sollte das ganze normalerweise funktionieren :wink:

Man liest sich, Stanlay :hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 Uhr.
Seite 1 von 2  1 2      

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