AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Mit TCanvas "langsam" zeichnen

Mit TCanvas "langsam" zeichnen

Ein Thema von Helpliner · begonnen am 4. Sep 2003 · letzter Beitrag vom 6. Sep 2003
Antwort Antwort
Helpliner

Registriert seit: 6. Aug 2003
Ort: Hamburg
84 Beiträge
 
Delphi 7 Personal
 
#1

Mit TCanvas "langsam" zeichnen

  Alt 4. Sep 2003, 21:38
Hallo Leute,

ich zeichne in einem Beispiel das Haus vom Nikolaus wie folgt:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Canvas.Pen.Width:=3; //Breite der Linien
 Canvas.Pen.Color:=clRed; //Farbe = Rot
 Canvas.MoveTo(50,150); //und los...
 Canvas.LineTo(150,50);
 Canvas.LineTo(50,50);
 Canvas.LineTo(150,150);
 Canvas.LineTo(50,150);
 Canvas.LineTo(50,50);
 Canvas.LineTo(100,0);
 Canvas.LineTo(150,50);
 Canvas.LineTo(150,150); //...und schluss!
end;
Ich möchte nun das man sehen kann welche Codezeile welche Linie zeichnet, dafür habe ich mir vorgestellt das ich in nem Label ausgebe welche Codezeile gerade verarbeitet wird, allerdings ist mir nicht ganz klar wie ich jetzt eine Pause zwischen jeder zu zeichnenden Linie mache (evtl. Timer, aber wie dann umsetzen).

Für Tips und Anregungen wäre ich dankbar.
VORSICHT: blutiger Anfänger!

Ähnlichkeiten mit tatsächlich funktionierendem Code sind rein zufällig und definitiv unbeabsichtigt.
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#2

Re: Mit TCanvas "langsam" zeichnen

  Alt 4. Sep 2003, 21:40
Kuck dir mal Delay (siehe Code-Library) und/oder Sleep(1000) an, das sollte eine pause verursachen.
Wobei Sleep nciht optimal ist, da die gnaze Anwendung pausiert wird.
Alexander
  Mit Zitat antworten Zitat
Helpliner

Registriert seit: 6. Aug 2003
Ort: Hamburg
84 Beiträge
 
Delphi 7 Personal
 
#3

Re: Mit TCanvas "langsam" zeichnen

  Alt 4. Sep 2003, 21:52
Danke! Ich hab das jetzt mal so umgesetzt:

Delphi-Quellcode:
function warten(msecs:integer): Integer;
var
  FirstTickCount:longint;
begin
  FirstTickCount:=GetTickCount;
  repeat
    Application.ProcessMessages;
  until ((GetTickCount-FirstTickCount) >= Longint(msecs));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Canvas.Pen.Width:=3; //Breite der Linien
 Canvas.Pen.Color:=clRed; //Farbe = Rot
 Canvas.MoveTo(50,150); //und los...
 Canvas.LineTo(150,50);
 warten(1000); //Warten...
 Canvas.LineTo(50,50);
 warten(1000);
 Canvas.LineTo(150,150);
 warten(1000);
 Canvas.LineTo(50,150);
 warten(1000);
 Canvas.LineTo(50,50);
 warten(1000);
 Canvas.LineTo(100,0);
 warten(1000);
 Canvas.LineTo(150,50);
 warten(1000);
 Canvas.LineTo(150,150); //...und schluss!
end;
die Anwendung reagiert auch wärend des wartens, also alles Super.

Meine Frage ist jetzt (da ich absoluter Delphi Neuling bin): Ist das die einfachste / beste Lösung sowas umzusetzen oder ist das einfach nur unbeholfen ?

Ich will ja schließlich nicht nur funktionierenden, sondern auch guten Code schreiben.
VORSICHT: blutiger Anfänger!

Ähnlichkeiten mit tatsächlich funktionierendem Code sind rein zufällig und definitiv unbeabsichtigt.
  Mit Zitat antworten Zitat
Gandalfus

Registriert seit: 19. Apr 2003
407 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Mit TCanvas "langsam" zeichnen

  Alt 4. Sep 2003, 22:08
Zitat von Helpliner:
Danke! Ich hab das jetzt mal so umgesetzt:
Meine Frage ist jetzt (da ich absoluter Delphi Neuling bin): Ist das die einfachste / beste Lösung sowas umzusetzen oder ist das einfach nur unbeholfen ?

Ich will ja schließlich nicht nur funktionierenden, sondern auch guten Code schreiben.
Optimal ist das sicher nicht(100% CPU Belastung)

mal etwas Pseudocode:

Timer mit intervall = 1000

Delphi-Quellcode:
Hauseckpunkt: array [0..xxx] of TPoint

Hauseckpunkt[0].x := 50;
Hauseckpunkt[0].y := 150;
......
und so weiter

in dem Timer werden jetzt die punkte abgearbeite:

Delphi-Quellcode:
inc(Zaehler);
linetoto(Hauseckpunkt[Zaehler]);

Geht so sicherlich noch nicht aber ich hoffe das Prinzip ist klar geworden.

[edit=Daniel B]Delphi-Tags eingefügt. Mfg, Daniel B[/edit]
  Mit Zitat antworten Zitat
Helpliner

Registriert seit: 6. Aug 2003
Ort: Hamburg
84 Beiträge
 
Delphi 7 Personal
 
#5

Re: Mit TCanvas "langsam" zeichnen

  Alt 4. Sep 2003, 22:12
Ja ich denke das habe ich verstanden, damit wäre es sogar möglich die Linie nicht erscheinen, sondern "zeichnen" zu lassen indem ich den Zähler einfach in kleinen schritten von x1,y1 nach x2,y2 erhöhe - richtig ?
VORSICHT: blutiger Anfänger!

Ähnlichkeiten mit tatsächlich funktionierendem Code sind rein zufällig und definitiv unbeabsichtigt.
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#6

Re: Mit TCanvas "langsam" zeichnen

  Alt 6. Sep 2003, 20:41
Nein, das ginge dann nicht, der Zähler müsste eine ganzzahl sein!
Du kannst dann aber entweder die Punkte einfach näher zusammensetzen (für 1 Strich dann z.B. 4) oder das Berechnen lassen (müsste einfach gehen da man ja nur rechte winkel + 45°-Winkel hat)

gruß flo
Florian Heft
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 14:22 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