Deutsch
Forum

SetSpriteAnim

 
Hi Frank!

Nun, ich habe wieder ein Problem.
Ich bin gerade dabei eine Routine zu schreiben, die meine Sprites innerhalb eines Programms verwaltet. Ein Teil davon ist zuständig für das laden der BMPs und anschließendem Setzen der Sprites. Die Größe der Sprite-BMP wird berechnet aus der Summe der Spritehöhen und der Breite des breitesten Sprites. Soweit so gut.
Wenn aber nun die Routine ein weiteres mal aufgerufen wird, soll die Sprite-BMP mit den neuen Sprite-Bild-Daten erweitert werden,sprich die neuen Daten werden angehängt. Ich kann nun zwar einfach die bestehenden Bild-Daten in ein neu erzeugtes,größeres ExtBMP kopieren und die neuen Daten zuladen, aber das verändert ja leider den Sprite-BMP-Handle, den ich mit InitSprite festgelegt habe. So bleibt mir nichts anderes übrig, als alle Sprites zu löschen und mit dem neuen Handle neu zu erstellen.

Meine daraus resultierende Frage:
Ist es möglich die Dll um eine Funktion zu erweitern, die eine ExtBMP vergrößern, bzw. verkleinern kann?
Oder/Und ist es möglich SetSpriteAnim mit einem weiteren Wert, dem Sprite-BMP-Handle, zu erweitern?

Mit den besten Grüßen,
Mischa
 
19.04.2004  
 



Hi Mischa,

Nun, ich habe wieder ein Problem.
Ich bin gerade dabei eine Routine zu schreiben, die meine Sprites innerhalb eines Programms verwaltet. Ein Teil davon ist zuständig für das laden der BMPs und anschließendem Setzen der Sprites. Die Größe der Sprite-BMP wird berechnet aus der Summe der Spritehöhen und der Breite des breitesten Sprites. Soweit so gut.
Wenn aber nun die Routine ein weiteres mal aufgerufen wird, soll die Sprite-BMP mit den neuen Sprite-Bild-Daten erweitert werden,sprich die neuen Daten werden angehängt. Ich kann nun zwar einfach die bestehenden Bild-Daten in ein neu erzeugtes,größeres ExtBMP kopieren und die neuen Daten zuladen, aber das verändert ja leider den Sprite-BMP-Handle, den ich mit InitSprite festgelegt habe. So bleibt mir nichts anderes übrig, als alle Sprites zu löschen und mit dem neuen Handle neu zu erstellen.

Warum verwendest du denn nicht von vornherein eine größere Bitmap, die dir in allen Fällen ausreicht? Dann kannst du die Sprites jederzeit mit CopyExtBmp() aktualisieren und in die Bitmap kopieren...

Meine daraus resultierende Frage:
Ist es möglich die Dll um eine Funktion zu erweitern, die eine ExtBMP vergrößern, bzw. verkleinern kann?

Das geht leider nicht. Mir ist keine API bekannt, die das könnte, ohne den Handle dabei zu ändern.

Oder/Und ist es möglich SetSpriteAnim mit einem weiteren Wert, dem Sprite-BMP-Handle, zu erweitern?

Ich möchte die SetSpriteAnim() aus Kompatibilitätsgründen nicht verändern, kann aber gerne eine neue Funktion einbauen, z.B.:
SetNewSpriteBitmap(spritehandle&,newspritehdc&)

Sinnvoller ist es aber trotzdem, die neuen Spritedaten einfach mit CopyExtBmp() in die Grafik zu setzen...
Was hälst du davon?

Mit den besten Grüßen,
Frank
 
19.04.2004  
 



Nochmals Hallo!

Klar, ich könnte eine BMP anlegen die groß genug ist. Allerdings weiß ich nicht im Vorfeld wie groß diese sein müßte. Es ist wohl nicht besonders Resourcen-schonend, einfach eine BMP mit sagen wir 2000 x 4000 zu erstellen. Es sind ja noch andere BMPs im Spiel. Möglicherweise ist das aber auch unsinnig von mir zu glauben ich müßte Resourcen schonen.
Beim Verkleinern ist das Problem schon deutlicher. Wenn ich die Daten eines Sprites entfernen will kann ich zwar den darunter gelegenen BMP-Bereich einfach um die Höhe der Sprite-Daten hochkopieren, dann haben die Sprites aber bis zum Setspriteanim falsche Daten. Wenn ich aber eine zweite Sprite-BMP in neuer Größe erzeuge, kann ich dort die BMP-Bereiche passend aneinander kopieren, dann die Sprites mit SetNewSpriteBitmap (vorausgesetzt dieser Befehl würde auch X u. Y-Koordinate der Sprite-Bild-Daten neu setzen) darauf umleiten und dann die alte Sprite-BMP lösche, und es gibt keine Fehler. Glaube ich!?
Hm, ziemlich umständlich. Vermutlich braucht man diese Funktion nicht allzu häufig.
Mein Problem habe ich auch schon mehr oder wenig gelöst, indem ich halt alle Sprites lösche und dann mit neuen Daten erneut setzte. Da es sich bei der Routine um eine Editor-Funktion handelt, kommt es ja nicht so sehr auf das Tempo an. Ich dachte nur, es würde möglicherweise Sinn machen bei einem Spiel... Naja, trotzdem danke für Deine schnelle Antwort!

Gruß,
Mischa

PS: Wird es mal eine Funktion geben, wie CopySizedExtBmp? Dann kann man sich nämlich den Umweg über Startpaint -1 sparen
 
19.04.2004  
 



Hallo Mischa,

Resourcen schonen ist doch immer sinnvoll.

Na ja, wenn du trotzdem noch mal so eine Funktion benötigst, dann melde dich halt wieder, auch mit neuer X und Y Angabe.

Ein CopySizeExtBmp()? Na wer weiß, ich werde mich bemühen euch das zu liefern, was ihr benötigt...

Gruß, Frank
 
19.04.2004  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.867 Betrachtungen

Unbenanntvor 0 min.
iF21.09.2014
Gabor Krizsma08.08.2011

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

unbekannt (4x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie