Seite 1 von 1

Sprite in anderes Sprite kopieren

Verfasst: 09.09.2008 02:09
von Toshy
Hi.

wie kann man ein kleines Sprite mehrfach in ein anderes kopieren?

Das Sprite soll nicht gleich in den Screenbuffer geschrieben werden. Ich will also quasi aus mehreren kleinen Grafiken zu Programmstart eine bestimmte "zusammenstellen" und diese dann im Spiel verwenden.
Normal hätte ich gedacht "copysprite" wäre sowas, aber das hat ja leider keine Angaben zur Zielpositon.

Toshy

[edit]
noch was. wie vergrößert oder verkleinert man ein Sprite (beim oben gesuchten Kopieren, aber auch mit "display".

wenn ich eine Grafik geladen habe, die aber nicht in der originalgröße anzeigen lassen will, wie ändere ich die "spritegröße" in Bezug auf die Anzeige?

Verfasst: 09.09.2008 02:12
von STARGÅTE
du änderst den AnzeigeBuffer.

Code: Alles auswählen

UseBuffer(Sprite)
wenn du also alle "Sprite"-Befehle in einem anderen Sprite anwenden willst, statt des Screen nutze ihn.

falls du dann wieder auf dem Screen arbeiten willst:
UseBuffer(-1)

Verfasst: 09.09.2008 02:33
von Toshy
Heißt daß, das ich den Screen also genau so wie sprites anspreche (im Gegensatz zu windows und gadget!? Dann ist ok.
Ich weiß halt noch nicht so recht was anzufangen mit den Grafikbefehlen und Funktionen. danke. hatte das mit Userbuffer wohl irgendwie nicht verstanden.



noch was. wie vergrößert oder verkleinert man ein Sprite (beim oben gesuchten Kopieren, aber auch mit "display".

wenn ich eine Grafik geladen habe, die aber nicht in der originalgröße anzeigen lassen will, wie ändere ich die "spritegröße" in Bezug auf die Anzeige?

Verfasst: 09.09.2008 02:38
von STARGÅTE
um Sprites in der größe zu verändern musst du die Sprite3D-Lib nutzen.
Infos dazu in der HILFE, bzw. in den Beispielen.

ich glaube aber das die Zoom-Befehle in einem UseBuffer(#Sprite) nicht gehen, dort sind nur "normale" Befehle für Sprites erlaubt.

Verfasst: 09.09.2008 02:50
von Toshy
ZoomSprite3D hatte ich gesehen, dachte aber das "3d" nun doch wieder was anderes ist und ich das nicht für die einfachen 2d Dinge nutzen kann. Wollte jetzt nicht gleich zur nächsten Lib gegen wo ich die erste noch nicht verstanden habe.
Ich schaue mir das dann mal genauer an.

Ich liebe ja PRofan, aber in einigen anderne Basicvarianen gar das doch etwas einfacher zu handhaben. Grummel. Na ja, irgendwann klappt es schon noch :-)

Verfasst: 09.09.2008 03:33
von Bisonte
Wenn du ein Image lädst, kannst du es auf ein Sprite zeichnen, und dabei helfen dir dann die optionalen Parameter von DrawImage() um es zu vergrössern/verkleinern.

Oder aber ResizeImage() vor dem Zeichen, was aber das gleiche Ergebnis zur Folge hat.

Verfasst: 09.09.2008 05:45
von Toshy
Das habe ich alles versucht bevor ich hier das Grafikthema angefangen habe. Es hat nur nicht geklappt.
Ich vermute es liegt an einem Bug das es nicht klappt.
http://www.purebasic.fr/german/viewtopi ... 820#211820

Ich werde die Tage mal versuchen ob das noch bei anderen "OutPutID"-Abfragen passiert. Jetzt nach 3 Tagen "nicht klappen" wegen den NULLEN hat meine Lust darauf "leicht minimiert" :-(

Danke für den Hinweis. So weiß ich wenigstens das ich wohl doch auf dem richtigen Weg bin.

Verfasst: 09.09.2008 14:17
von Bisonte
Aber wieso solltest du mehrere SpriteOutputs benötigen ?

Jedes StartDrawing ist für ein "Objekt" , also alles sammeln was man damit
machen möchte und dann in einem Rutsch...

Dann erklär doch mal was du machen willst, bzw. wozu du mehrere Outputs brauchen solltest...

Verfasst: 09.09.2008 17:21
von Toshy
Es geht aktuell einfach um das Verständiss wie die ganzen grafischen FUnktionen arbeiten und um mögliche Fehler oder BUgs zu finden.
Mit den Outputs hier aber z.B. will ich Rechenzeit sparen. Wenn ich z.B. eine Grafik bzw. Sprite haben will was oft verwendet wird, aber je nach Programmstart oder änderung ganz anders aussehen soll so soll die Grafik nicht "on-fly" je Frame neu erstellt werden, sondern nur einmal oder wie halt benötig.

Ich mache in den letzten 2 Jahren relativ wenig in PB, aber immer mal wieder was. In der Zeit bin ich aber über einige versteckte BUGs (echte Bugs) oder Fehler in der Hilfe gestolpert wie leider sehr aufhalten.
Also erstmal schauen was geht, was nicht und was wie funktioniert.