AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

schiff(canvas)

Ein Thema von Informatik_Doppelstundler · begonnen am 1. Feb 2006 · letzter Beitrag vom 1. Feb 2006
Antwort Antwort
Informatik_Doppelstundler

Registriert seit: 6. Dez 2005
11 Beiträge
 
#1

schiff(canvas)

  Alt 1. Feb 2006, 12:01
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)

  Mit Zitat antworten Zitat
Ferber

Registriert seit: 9. Mär 2005
Ort: Wien Umgebung
155 Beiträge
 
Delphi 2006 Architect
 
#2

Re: schiff(canvas)

  Alt 1. Feb 2006, 13:31
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:
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;
Besser wäre es ein generisches 'TGraphicObject' zu definieren, von dem du dann spezialisierte grafische Objekte ableitest.

Delphi-Quellcode:
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;
mfg
Otto
  Mit Zitat antworten Zitat
KuH_am_SchuH

Registriert seit: 17. Jan 2006
72 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: schiff(canvas)

  Alt 1. Feb 2006, 13:46
warum bewegst du nich einfach ein bitmap ?
  Mit Zitat antworten Zitat
Ferber

Registriert seit: 9. Mär 2005
Ort: Wien Umgebung
155 Beiträge
 
Delphi 2006 Architect
 
#4

Re: schiff(canvas)

  Alt 1. Feb 2006, 13:56
Zitat von KuH_am_SchuH:
warum bewegst du nich einfach ein bitmap ?
Klar sind Bitmaps und Sprites einfacher, aber IMHO geht's hier um das Lernen der Grundlagen.
Otto
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:04 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