AGB  ·  Datenschutz  ·  Impressum  







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

Objekt Zeichnen

Ein Thema von DeluxXx · begonnen am 11. Jan 2008 · letzter Beitrag vom 11. Jan 2008
Antwort Antwort
Benutzerbild von DeluxXx
DeluxXx

Registriert seit: 3. Jul 2006
92 Beiträge
 
#1

Objekt Zeichnen

  Alt 11. Jan 2008, 14:42
Wie kann ich auf eine Paintbox ein Objekt zeichnen , wobei wie gezeichnet werden soll in einer Methode im Objekt stehn soll ?
If debugging is the process of removing bugs, then programming must be the process of putting them in.
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#2

Re: Objekt Zeichnen

  Alt 11. Jan 2008, 14:48
Wäre nett, wenn du dein Prob etwas genauer vorstellen würdest z.b. Was du malen willst?!
  Mit Zitat antworten Zitat
Benutzerbild von DeluxXx
DeluxXx

Registriert seit: 3. Jul 2006
92 Beiträge
 
#3

Re: Objekt Zeichnen

  Alt 11. Jan 2008, 14:54
Ich will einen Schienenplan zeichnen dazu hab ich die Klasse TSchiene, von der später noch TGerade ... abgeleitet werden sollen . Da des ziemlich unübersichtlich wird und ja auch den Sinn des ObjektOrientierten programmierens wiederlegt möchte ich nicht in der OnPaint Methode von der Paintbox alles zeichnen , anstatt dessen wäre in der zb TGerade eine Paint Methode ganz praktisch glaub ich .
If debugging is the process of removing bugs, then programming must be the process of putting them in.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Objekt Zeichnen

  Alt 11. Jan 2008, 15:12
Nein... TSchiene ist deine Funktionsklasse. Die soll sich schön aus dem Zeichnen raushalten.

Erzeuge eine Erbe von z.B. TPaintBox, und erweitere das Ganze durch Methoden, um eine TSchiene zu zeichnen, die du als Parameter übergibst. Weil du dich weiter in der Paintbox befindest, kannst du somit direkt auf den Canvas zeichnen.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: Objekt Zeichnen

  Alt 11. Jan 2008, 15:24
Ich würde so vorgehen:

Es gibt eine Klasse TSchienenPlan, der eine Liste mit allen Gleis-Objekten enthält. (TObjectList hilft hier weiter)
TSchienenPlan hat eine Methode PaintToCanvas():
Delphi-Quellcode:
procedure TSchienenPlan.PaintToCanvas(canvas:TCanvas);
var i : integer;
begin
   DrawBackground(Canvas);
   // alle Objekte zeichen
   for i := 0 to Objectcount-1 do
      objects[i].PaintToCanvas(Canvas);
end;
Dann sieht der Aufruf so aus:
Delphi-Quellcode:
procedure TForm1.PaintBox1Paint(Sender:TObject);
begin
   FSchienenPlan.PaintToCanvas(Paintbox1.Canvas);
end;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

Re: Objekt Zeichnen

  Alt 11. Jan 2008, 15:31
nja, du kannst auch TSchiene von TPaintBox ableiten und z.B. als Platte TPanel/TScrollBox(oder was auch immer) verwenden, dann kann sich alles selber zeichnen

ansonsten mußt du passende Schnittstellen übergeben (wie es z.B. shmia gerade sagte)
wo du dann dem Objekt TSchiene oder seinen Nachfahren die Zeichfläche übergibst und im dann sagst es solle sich darauf zeichnen.

alternatv kannst du in TSchiene auch speichern wer seine "Eltern" (z.B. TSchienenPlan) sind (also wozu es gehört) und von dort holt es sich beim Befehl ZeichneDichJetztMal die Zeichenfläche holt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: Objekt Zeichnen

  Alt 11. Jan 2008, 15:46
Die perfekte Lösung geht so:
Es gibt die (nichtvisuelle) Klasse TSchienenplan, die alle Unterobjekte verwaltet (entweder als Liste oder als Baum).
Dann gibt es mindestens eine Visualisierungsklasse, die 2 Properties hat: ein TSchienenplan-Objekt und ein Canvas.
Die Visualisierungsklasse hat ggf. weitere Properties wie z.B. Zoomfactor und Ursprungspunkt.
Man könnte sich nun auch eine 2D- und eine 3D Visualisierungsklasse vorstellen.

Das Formular ist nun der Klebstoff, der den Schienenplan, die Visualisierungsklasse und das Ausgabemedium (Paintbox, Image oder Printer) zu einer ganzen Anwendung verbindet.
Durch Austauschen der Visualisierungsklasse kann der Schienenplan unterschiedlich dargestellt werden.
Andererseits bindet man sich auch nicht an die Paintbox, sondern kann die grafische Ausgabe auf beliebigen Medien, die einen Canvas bieten, vornehmen.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von DeluxXx
DeluxXx

Registriert seit: 3. Jul 2006
92 Beiträge
 
#8

Re: Objekt Zeichnen

  Alt 11. Jan 2008, 16:52
Danke euch allen ich denk jetzt müsste ich es hinkriegen =) .
If debugging is the process of removing bugs, then programming must be the process of putting them in.
  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 15:08 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