AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi TImage mehrmals gleichzeitig auf Form zeichnen

TImage mehrmals gleichzeitig auf Form zeichnen

Ein Thema von scholzi265 · begonnen am 31. Jan 2020 · letzter Beitrag vom 31. Jan 2020
Antwort Antwort
scholzi265

Registriert seit: 31. Jan 2020
8 Beiträge
 
#1

TImage mehrmals gleichzeitig auf Form zeichnen

  Alt 31. Jan 2020, 10:34
Hallo zusammen,

ich arbeite momentan an der Programmierung des Spiels Snake, und muss nur noch die Grafiken einfügen. Das heißt, ich habe den Kopf der Schlange schon eingefügt, allerdings brauche ich noch den Körper, der aus aneinanderhängenden, grünen Kreisen besteht.
Ich lade diesen Kreis aus einem JPG und habe nun auf Form1 ein TImage eingefügt, in welchem dieses JPG enthalten ist. Wenn sich die Schlange bewegt, verschiebe ich jeweils dieses TImage. Nun habe ich folgendes Problem:
Die Schlange wird mit zunehmender Zeit länger, deshalb brauche ich mehrere "Glieder". Allerdings ist das TImage auf der Form ja nur einmal vorhanden. Gibt es einen Weg, dieses TImage zu duplizieren, sodass man dann 2 dieser Glieder auf einmal auf der Form hat und verschieben kann? Oder gibt es einen anderen Weg, weitere "Glieder" der Schlange auf der Form zu erzeugen?

Vielen Dank schon einmal im Voraus,
Tristan Scholz
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.559 Beiträge
 
Delphi 7 Personal
 
#2

AW: TImage mehrmals gleichzeitig auf Form zeichnen

  Alt 31. Jan 2020, 11:11
Es ist ja schon etwas her, (DOS und Textbildschirm) aber wenn ich mich recht erinnere wurde der Kopf und 1..9 Glieder neu gezeichnet und der Schwanz gelöscht und neu gezeichnet. Es wurden aber keine Zeichen verschoben.
Vllt solltest Du Deine Vorgehensweise noch einmal überdenken.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Frühlingsrolle

Registriert seit: 31. Aug 2019
182 Beiträge
 
#3

AW: TImage mehrmals gleichzeitig auf Form zeichnen

  Alt 31. Jan 2020, 11:30
Besser wäre es anstelle der TImage Komponente, TPaintbox zu verwenden.
Darauf zeichnest du über die Eigenschaft .Canvas den Körper, in Form von Kreisen, basierend auf einem Array von z.B. TPoint.
Auch den Kopf könntest du über jene Eigenschaft driekt mitzeichnen. Erstelle dazu z.B. ein TBitmap-Objekt und lade die Kopf-Grafik hinein. Lass diese mit .Canvas.Draw() o.ä. auf die Paintbox malen.
Politicians are put there to give you the idea you have freedom of choice. You don't. You have no choice. You have owners. They own you. They own everything. They don't want well informed, well educated people capable of critical thinking. (George Denis Patrick Carlin)
  Mit Zitat antworten Zitat
scholzi265

Registriert seit: 31. Jan 2020
8 Beiträge
 
#4

AW: TImage mehrmals gleichzeitig auf Form zeichnen

  Alt 31. Jan 2020, 11:36
Wie kann ich denn Grafiken in die Bitmap laden?
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
2.342 Beiträge
 
Delphi 2010 Professional
 
#5

AW: TImage mehrmals gleichzeitig auf Form zeichnen

  Alt 31. Jan 2020, 11:39
Wie kann ich denn Grafiken in die Bitmap laden?
docwiki
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...
  Mit Zitat antworten Zitat
scholzi265

Registriert seit: 31. Jan 2020
8 Beiträge
 
#6

AW: TImage mehrmals gleichzeitig auf Form zeichnen

  Alt 31. Jan 2020, 11:42
Hat funktioniert, vielen Dank!!!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
35.261 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: TImage mehrmals gleichzeitig auf Form zeichnen

  Alt 31. Jan 2020, 12:27
ScanLine ist für den "Schnellen" Zugriff auf Zeilen, und dort muß man immer auf das PixelFormat achten, da auf die Rohdaten zugegriffen wird.

Ansonsten alle Methoden im Delphi-Referenz durchsuchenTCanvas, wie z.B. Bitmap.Canvas.Pixels[x,y] (auch wenn Pixels nicht die schnellste Methode ist)
und via Bitmap.Handle (HBITMAP) oder Bitmap.Canvas.Handle (HDC) können auch viele weitere Methoden verwendet werden, welche direkt mit den Windows-Handles arbeiten.


PS:
  • auf ein Delphi-Referenz durchsuchenTImage (Image.Picture.Bitmap) zeichnen
  • oder intern auf ein Bitmap und das dann auf die Form (macht TImage nicht viel anders)
  • oder direkt im OnPaint auf die Form, bzw. auf eine Delphi-Referenz durchsuchenTPaintBox
  • und dann gibt es noch unzählige Graphic-Engines, wo du nicht selbst malst, sondern z.B. Sprites (Teil-Bitmaps) und nur noch deren Position angibst
    Andorra 2D uvm. Bei Google suchenDelphi 2D graphic engine
  • ...
  • und ich bin mir ganz sicher, dass es hier im Forum viele Tutorials gibt, bezüglich dem Zeichnen von 2D-Rastergrafiken für einfache Spiele
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (31. Jan 2020 um 12:45 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.585 Beiträge
 
Delphi 2006 Professional
 
#8

AW: TImage mehrmals gleichzeitig auf Form zeichnen

  Alt 31. Jan 2020, 13:55
Und Snake hatten wir in der Geschichte der Delphipraxis bestimmt auch schon mal.
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 05:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf