Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi art eeg mit canvas (https://www.delphipraxis.net/33699-art-eeg-mit-canvas.html)

Luckie 13. Nov 2004 11:55

Re: art eeg mit canvas
 
@big: das ist aber kein EEG. Da werden ja nur zufällig jede Sekunde neue Balken generiert oder täusche ich mich da?

vollmer-net 13. Nov 2004 11:59

Re: art eeg mit canvas
 
es soll ja auch eine art eeg werden....bigg's demos ist schon cool...ich würde nur gerne wollen das ich richtige werte einsetzen kann und sich das ganze dann immer von rechts um eine stelle verschiebt und ganz rechts halt der aktuelle wert steht...

jemand ne ahnung?

Luckie 13. Nov 2004 12:15

Re: art eeg mit canvas
 
Also ein EEG sieht bei mir so aus:
Delphi-Quellcode:
type
  TPTArray = array of TPoint;

var
  Form1: TForm1;
  PTArray: TPTArray;
  Index: Integer = 0;

implementation

{$R *.dfm}

procedure DrawPixel(Canvas: TCanvas; Color: TColor; pt: TPoint);
begin
  Canvas.Pixels[pt.X, pt.Y] := Color;
end;

procedure DeletePixels(Canvas: TCanvas; Color: TColor; ptArray: TPTArray);
var
  i: Integer;
begin
  for i := 0 to length(ptArray) - 1 do
    Canvas.Pixels[ptArray[i].X, ptArray[i].Y] := Color;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Enabled := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Setlength(PTArray, Paintbox1.Width);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  pt: TPoint;
begin
  pt.X := Index;
  pt.Y := Paintbox1.height div 2;
  ptArray[Index] := pt;
  DrawPixel(Paintbox1.Canvas, clGreen, pt);
  Inc(Index);
  if Index = length(ptArray) then
  begin
    DeletePixels(Paintbox1.Canvas, clbtnFace, ptArray);
    Index := 0;
  end;
end;
Ein Button, ein Timer und eine Paintbox. Den y-Wert kannst du ja entsprechend variiren.

vollmer-net 13. Nov 2004 12:24

Re: art eeg mit canvas
 
das ist auch ein schöner effekt, ich suche aber dennoch so wie oben das demo von bigg, nur halt das ich die werte zuweisen kann... und sich das ganze immer nur um eine stelle nach rechts verschiebt

Luckie 13. Nov 2004 12:29

Re: art eeg mit canvas
 
Dann mach es wie ich mit einem Array.

vollmer-net 13. Nov 2004 12:48

Re: art eeg mit canvas
 
ich kenne mich mit sowas nicht aus....kann mir nicht jemand helfen? ich weiß noch nicht mal wie ich anfangen soll! das beispiel von big ist ja schon ganz gut. ich denke es müsste doch nur noch abgeändert werden oder?

bigg 13. Nov 2004 14:27

Re: art eeg mit canvas
 
luckie hat schon recht, du musst ein array anlegen und dann alle einträge nacheinander
von rechts nach links zeichnen. In meinem Beispiel generiere ich alle Einträge neu pro Zeichnung.

Du brauchst doch bloss das Array mit Daten füllen. Die grösse des Arrays hängt von der Breite
des Diagramms ab.

@Luckie
Ja, ein EEG ist es nicht, aber ein schicker langsamer Effekt schon :-D

vollmer-net 13. Nov 2004 15:06

Re: art eeg mit canvas
 
kann mir da nicht jemand helfen?

vollmer-net 13. Nov 2004 16:10

Re: art eeg mit canvas
 
was mir probleme macht ist die abstufung in 60 teile u.s.w. und das mit dem nach links verscheieben!

Tubos 13. Nov 2004 16:33

Re: art eeg mit canvas
 
Ich würde das Array nicht verschieben, sondern stattdessen eine integer-Variable namens Anfang machen, die die aktuelle "ganz-links"-Position speichert.
Beim Zeichnen fängst du bei diesem Wert an, wenn du das Ende des Arrays erreicht hast machst du am Anfang weiter, und zwar solange bis du wieder beim Ende (also Anfang-1) bist.
Wenn du einen neuen Wert einträgst, überschreibst du einfach das Ende (Anfang-1) damit.
Dadurch musst du überhaupt nichts verschieben. Ist IMHO einfacher und natürlich wesentlich schneller.

Tubos


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr.
Seite 2 von 3     12 3      

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