Sprite in ein erstelltes Images malen

Anfängerfragen zum Programmieren mit PureBasic.
Zweihänder
Beiträge: 49
Registriert: 21.06.2007 14:40

Sprite in ein erstelltes Images malen

Beitrag von Zweihänder »

Eine Frage:

Kann ich ein geladenes BMP-Sprite in ein erstelltes Image malen?

Das von mir erstellte Image wurde auf die Position 1 gemalt:

CreateImage(1,200,200)

Jetzt will ich auf dieses Image das die Pixel des geladene Sprite malen. Das geladene Sprite ist auf Position 98:

LoadSprite(98,"GFX\Infoscreen.bmp",0)

Ist das möglich?
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

nein.

du kannst zwar images drawen (DrawImage), und das in jeden 2D-Drawing kanal, also auch auf ein sprite,
aber sprites können nur auf screenbuffer, also auf den screen selber oder auf andere sprites Display-t werden.

btw:
das ist nix irgendwie "Position", das ist die nummer oder ID.
und die kann sich bei Images und Sprites überschneiden, weil das verschiedene objektlisten sind.
Zuletzt geändert von Kaeru Gaman am 05.08.2007 18:10, insgesamt 1-mal geändert.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Zweihänder
Beiträge: 49
Registriert: 21.06.2007 14:40

Beitrag von Zweihänder »

Ist es denn dann möglich mit createsprite ein neues Sprite zu erstellen und dort andere Sprites drauf zu malen?
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

yo kla, sagte ich doch auch.

scheu dir mal UseBuffer() an.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Zweihänder
Beiträge: 49
Registriert: 21.06.2007 14:40

Beitrag von Zweihänder »

Ok, mal schauen ob ich durchsteige...
Zweihänder
Beiträge: 49
Registriert: 21.06.2007 14:40

Beitrag von Zweihänder »

So, ich habe jetzt folgenden Teilcode:

Createsprite(99,200,200)
Loadsprite(98,"GFX\Infoscreen.bmp",0) - (200*200 Pixel)

If Mousebutton=2

UseBuffer(99)
DisplaySprite(98,1,1)

Endif

Jetzt sollte doch eigentlich bei Betätigen des Mousebutton 2 das Sprite#98 auf dem erstellten Sprite#99 ausgegeben - wenn ich das richtig verstanden habe. Allerdings passiert leider nichts...
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Beitrag von PureLust »

Zweihänder hat geschrieben:Createsprite(99,200,200)
Loadsprite(98,"GFX\Infoscreen.bmp",0) - (200*200 Pixel)
Auha ... Du scheinst da noch ein riesiges generelles Verständnisproblem zu haben was diese ID's und auch die X/Y-Position angeht.

Wirf nochmal einen tiefen Blick in die Hilfe und die darin enthaltenen Beispiele und schau auch mal bei www.PureArea.net rein, dort gibt es einige Links zu Anfänger-Tutorials.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

1. du musst schon die Funktion Mousebutton() aufrufen,
und nicht abfragen, ob die Variable "Mousebutton" zufällig den wert 2 hat.

2. und wenn das dann funktioniert, würdest du es garnicht sehen,
weil du auch noch das sprite 99, auf das du das sprite 98 displayed hast,
auf dem screen anzeigen musst damit du es siehst.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten