![]() |
schiff(canvas)
Hi. Ich habe ein Problem: Ich möchte in einem image ein simpel gezeichnetes schiff nach rechts unten bewegen. dazu benutz ich nen timer...irgendwie klappt das aber alles nicht und er zeichnet nur unten nen komischen kreis, der eigentlich nicht der figur des schiffes entspricht :? .
Hier der Code:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin while (b<300) do begin a:=a+1; b:=b+1; c:=b+1; d:=d+1; e:=e+1; f:=f+1; g:=g+1; h:=h+1; Mitte1:=(a+g) div 2; Mitte2:=(d+h) div 2; x:=strtoint(edit2.text); y:=x*((c-g)div(d-h)); with paintbox1.canvas do begin rectangle (-1,-1,1000,1000); arc (a,a,b,b,c,d,e,f); MoveTo (c,d); lineto (g,h); MoveTo (Mitte1,Mitte2); lineto (Mitte1+x, Mitte2-y); end; end; end; Die Anfangsvariabeln des (funktionierenden) einmasters sind folgende:
Delphi-Quellcode:
a:=10; //Anfangswerte des Rechtecks
b:=80; //Endpunkte des Rechtecks c:=10; //Ellipsenbegrenzungslinie nach links d:=40; // -"- e:=80; //Ellipsenbegrenzungslinie nach rechts f:=60; // -"- g:=75; //Endpunkt 1 der Ellipsenrandlinie (Linie des Decks) h:=59; //Endpunkt 2 der Ellipsenrandlinie (Linie des Decks) :coder2: |
Re: schiff(canvas)
Denk es wäre sinnvoll das Schiff als Objekt zu definieren, dass du dann mit dem Timer bewegst.
Das Schiff müsste die Methoden 'Zeichnen' und 'Löschen' implementieren, sonst kriegst du nur ein Linienmuster von links oben nach rechts unten heraus. :) Ist das klassische Einsteigerbeispiel für OOP.
Delphi-Quellcode:
Besser wäre es ein generisches 'TGraphicObject' zu definieren, von dem du dann spezialisierte grafische Objekte ableitest.
type
TSchiff = class(TObject) private hier die Variablen definieren public constructor Create(aCanvas:TCanvas); procedure Draw(x,y:Integer); procedure Hide(x,y:Integer); procedure Move(FromPoint, ToPoint:TPoint); end;
Delphi-Quellcode:
mfg :)
type
TGraphicObject = class(TObject) private FPosition:TPoint; public constructor Create(aCanvas:TCanvas); virtual; procedure Draw(x,y:Integer); virtual; procedure Hide(x,y:Integer); virtual; procedure Move(FromPoint, ToPoint:TPoint); virtual; end; TSchiff=class(TGraphicObject) constructor Create(aCanvas:TCanvas); override; procedure Draw(x,y:Integer); override; procedure Hide(x,y:Integer); override; ... end; TKriegsschiff=class(TSchiff) ... end; TPolizeiboot=class(TSchiff) ... end; |
Re: schiff(canvas)
warum bewegst du nich einfach ein bitmap :P ?
|
Re: schiff(canvas)
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz