Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi 2D-Bitmap scrollen ???!!! (https://www.delphipraxis.net/37238-2d-bitmap-scrollen.html)

Luna 3. Jan 2005 02:44


2D-Bitmap scrollen ???!!!
 
Hallo Leute,
ich hab ein Problem und drehe langsam am Rad :cry:

Ich möchte ein Spiel programmieren, so ähnlich wie die PanzerGeneral-Serie oder Strategic Command. Dazu möchte ich eine Bitmap, die deutlich größer als ein Bildschirmauflösung von 1280x1024 ist, einfach durch Bewegen des Mauszeigers an den Rand des Bildschirms in die entsprechende Richtung scrollen. Und ich möchte halt nicht die TScrollbox benutzen, da dies viel umständlicher ist... mit den ScrollBars. Kann mir jemand dazu einen Tipp geben ?

Vielleicht gibt es ja eine ganz einfache Lösung, ich kenne mich in Delphi noch nicht so aus, habe aber jetzt eine 5.0 Version geschenkt bekommen. Vielen Dank im voraus, und ach ja frohes Neues :xmas:

Luna

supermuckl 3. Jan 2005 02:47

Re: 2D-Bitmap scrollen ???!!!
 
hmm
Hast aber hohe Ansprüche ;)

Jedenfalls ist der Weg den du dir da vorgenommen hast sehr steinig.
Und der erste wäre:

Die meisten bzw alle Spiele, die so aufgebaut sind, scrollen nicht das Riesenbitmap, sondern bauen nur das auf, was im sichtbaren bereich liegt und den musst du halt dann verschieben ;)

//edit
Herzlich willkommen bei DP :)

Oxmyx 3. Jan 2005 03:37

Re: 2D-Bitmap scrollen ???!!!
 
So ein riesiges Bitmap, das sich als Spielfeld eignen würde, braucht zudem auch massig Speicherplatz und kann wahrscheinlich gar nicht flüssig bewegt werden.
Besser ist es, das Spielfeld aus kleinen Flächen aufzubauen (z.B. Quadrate oder, so wie in Panzer General: Sechsecke), dass du dann z.B. eine Fläche für "Wiese" hast, und eine andere für "Wald", "Gebirge", etc. Dann zeigst du nur diejenigen Flächen an, die im Bildschirmausschnitt überhaupt sichtbar sind.
Es gibt auf jeden Fall keine "ganz einfache Lösung", und wenn du wirklich ganz unerfahren im Programmieren bist, such dir doch für den Anfang etwas leichteres aus. :-)

MisterNiceGuy 3. Jan 2005 08:00

Re: 2D-Bitmap scrollen ???!!!
 
...Aber falls du dein Spiel wirklich so aufbauen willst, leg deine Imagekomponente auf ein panel und verschiebe das Image, indem du dessen X und Y Position auf dem Panel festlegst.
Beim OnMouseMove des Panels legst du bestimmte Zonen fest und wenn sich die Maus auf einer der Zonen befindet, lässt du das Image auf dem Panel wandern :)

Ben1 3. Jan 2005 19:50

Re: 2D-Bitmap scrollen ???!!!
 
Zitat:

So ein riesiges Bitmap, das sich als Spielfeld eignen würde, braucht zudem auch massig Speicherplatz und kann wahrscheinlich gar nicht flüssig bewegt werden.
Eine These die bereits vor vielen Jahren durch Panzergeneral 3D wiederlegt wurde. Das Spiel verwendete eine riesige Bitmap mit einem handgemalten Hintergrund als Spielfeld.
Ist es den so schwierig einen bestimmten Bereich einer Bitmap über DirectX auf das Surface zu klatschen ?

Oxmyx 3. Jan 2005 20:42

Re: 2D-Bitmap scrollen ???!!!
 
Zitat:

Zitat von Ben1
Eine These die bereits vor vielen Jahren durch Panzergeneral 3D wiederlegt wurde. Das Spiel verwendete eine riesige Bitmap mit einem handgemalten Hintergrund als Spielfeld.
Ist es den so schwierig einen bestimmten Bereich einer Bitmap über DirectX auf das Surface zu klatschen ?

Es ist ja etwas komplett anderes, ob ich eine große Textur von DirectX zeichnen lasse, oder in einem Steuerelement (z.B. TImage) der grafischen Windows-Oberfläche. Ersteres geht, zweiteres geht nicht so gut (weil es ruckelt).
Und man kann nicht DirectX einfach mal kurz dazu benutzen, das zu zeichnen. Um ein Bild mit DirectX zu zeichen, muss man erst die Verwaltungsschnittstelle IDirect3D9 erzeugen, dann muss man die Geräteschnittstelle IDirect3DDevice9 erzeugen, dann muss man ein RHW-Vertexformat und ein flexibles Vertexformat definieren, ein Rechteck aus zwei Dreiecken erzeugen, das Bild mit der Texturschnittstelle IDirect3DTexture9 laden, und dann durch Aufrufe von IDirect3DDevice9.BeginScene/SetRenderState/SetTexture/ SetMaterial/SetTransform/DrawPrimitiveUP/EndScene/Present das Bild schließlich rendern. Für absolute Anfänger ist das auch wegen den verwendeten Technologien (COM) sehr undurchsichtig.

Luna 4. Jan 2005 05:02

Re: 2D-Bitmap scrollen ???!!!
 
Vielen Dank Leute für die Antworten, wenn auch keine richtig hilfreich war :|
Aber ich denke ich habe das Problem jetzt im Griff mit image und paintbox :-D

bis denne, Luna

Ben1 4. Jan 2005 06:32

Re: 2D-Bitmap scrollen ???!!!
 
Zitat:

dann muss man ein RHW-Vertexformat und ein flexibles Vertexformat definieren, ein Rechteck aus zwei Dreiecken erzeugen, das Bild mit der Texturschnittstelle IDirect3DTexture9 laden, und dann durch Aufrufe von IDirect3DDevice9.BeginScene/SetRenderState/SetTexture/ SetMaterial/SetTransform/DrawPrimitiveUP/EndScene/Present das Bild schließlich rendern.
Nö, muß man nicht. Man kann genauso gut die Schnittstellen für DirectDraw (also den alten 2D Teil) benutzen, indem man statt DX 9 z.B. DX 7 nutzt. Aufgrund der strickten Abwärtskompatibilität von DX ist das möglich.

Oxmyx 4. Jan 2005 12:01

Re: 2D-Bitmap scrollen ???!!!
 
Zitat:

Zitat von Ben1
Nö, muß man nicht. Man kann genauso gut die Schnittstellen für DirectDraw (also den alten 2D Teil) benutzen, indem man statt DX 9 z.B. DX 7 nutzt. Aufgrund der strickten Abwärtskompatibilität von DX ist das möglich.

Dabei verzichtet man auf alles gute, was DirectX ausmacht (Hardwarebeschleunigung).

Ben1 4. Jan 2005 12:11

Re: 2D-Bitmap scrollen ???!!!
 
?
Wenn auf den Rechner DX 9 installiert ist, man aber z.B. DX 7 Funktionen benutzt, dann werden die trotzdem von DX 9 ausgeführt !
Außerdem, wat willste den bitteschön beim simplen zeichen einer Bitmap in 2D groß beschleunigen ?
Die Hardwarefunktionen der Grafikkarte sind doch auf 3D ausgelegt, die nützen da sowieso nichts.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 Uhr.
Seite 1 von 2  1 2      

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