Frage zu viewport
Übersicht

Fertich!Betreff: Frage zu viewport |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hoi allerseits,
hab da ein problem, vielleicht stell ich mich auch einfach dumm, aber könnt ihr mir mal erklären wie man mit viewport richtig umgeht. wollte das ganze so anwenden: eine art leveleditor in dem man einfach bitmaps irgendwo auf den bildschrim setzt, die positionen in einer bank speichert um somit eine leveldatei zu erstellen. jetzt ist es so, dass die aktuelle grafik sich immer mit der maus mitbewegt folglich muss man ja auch jedesmal auch alles neu zeichenen, also hab wurde dann bei jeder bewegung der maus die positionen aus der bank gelesen und alles neu gezeichnet mit der folge, dass es richtige ruckler gab. dann hab ich mal ein bisschen rumgesucht und bin dann auf viewport gestoßen. Ich wollte es dann damit lösen und hab versucht einfach jede positonierte grafik in ein "viewport" zu "setzen", um sie nicht jedesmal neu zeichnen zu müssen. allerdings konnte man dann nur noch innerhalb dieses bereiches bilder setzen.... wäre super wenn mir jemand weiterhelfen könnte gruss |
||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also VIEWPORT löst dein Problem wahrscheinlich nicht. Ich glaube, dass du ständig die Positionswerte aus deiner Bank liest, ist unnötig. Normalerweise ist das zeichnen von einzelnen Bitmaps und das neuzeichnen überhaupt kein Problem dank DirectX.
Mein Tipp: Nicht so oft Werte speichern und laden |
||
Fertich! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
jo ich schau mal was sich machen lässt ![]() noch eine frage, wäre es vielleicht sinnvoller die werte vorübergehend in einem dim-feld zu speichern?! is das schneller wie ein bank-feld?! |
||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Fertich! hat Folgendes geschrieben: is das schneller wie ein bank-feld?!
erstmal heißt es: Ist das schneller ALS ![]() und zweitens hier ein Codefragment: Code: [AUSKLAPPEN] pic = LoadImage("Blabla.bmp") Repeat mx = mouseX() my = mouseY() ;Hintergrund malen ;. ;. ;. DrawImage pic, mx, my Flip() Until MouseDown(1) ;Und hier erst solltest du das gesetzte Bild speichern. Also wenn ich dein Problem richtig verstanden habe, würd ich es so machen. |
||
Fertich! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also danke erstmal für deine antworten
was ich aber nicht ganz verstehe ist, dass die schleife ja nur solange ausgeführt wird bis die maustaste betätigt wurde. aber man soll ja nicht nur eine bitmap setzten können sondern mehrere aneinander un sie sollen immer sichtbar sein um das setzten der grafiken zu erleichtern. also muss das programm die positionen der einzelnen grafiken ja zwischenspeichern und bei jeder mausbewegung muss das bild neu gemalt werden. meine frage war eigentlich folgende, ob man immer jedes bild bei jeder mausbewegung neu zeichnen muss, was mir nicht ganz sinnvoll erschien und deswegen hab ich mir gedacht könnte man mit viewport so eine art container gestalten in dem man das bild ablegen kann... gruss |
||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Doch, doch, das mit dem ständig neuzeichnen ist eine gängige Methode.
Und mit den mehreren Gebäuden hast du natürlich Recht, irgendwo muss man sie abspeichern. Zum Beispiel in Dimfeldern (z.B. pic(i), gx(i) und gy(i) Nehmen wir an du hast die Schleife verlassen. Dann speicherst du die Koordinaten des gesetzten Bildes zum Beispiel in gx(i) und gy(i). Und startest die Schleife neu. Dort, wo in der Schleife: Hintergrund zeichnen steht, malst du nun die abgespeicherten Bilder: Also nochmal: dim pic(9), picx(9), picy(9) ;Heißt, du kannst maximal 10 Bilder speichern Repeat aktpic = loadimage("kjdflakfh.bmp") ;aktuelles Bild laden Repeat mx = mousex() my = mousey() for i = 0 to 9 if pic(0) > 0 then drawimage pic(i), picx(i), picy(i) end if next drawimage aktpic, mx, my flip() Until MouseHit(1) for i = 0 to 9 ;nächsten freien Index ermitteln if pic(0) = 0 then exit next pic(i) = aktpic picx(i) = mx picy(i) = my Until Keydown(1) So ungefähr, habs nicht getestet und ist auch keine Gewähr drauf. ![]() Was ich aber noch anmerken muss: Statt der Dimfelder würde ich Types verwenden, aber ich glaube du bist damit noch ein wenig überfordert. ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group