kurve aufm screen zeichnen

  • kurve aufm screen zeichnen

    ein kurve wird gezeichnet im draw event.

    der bildschirm wird ja immer wieder "resettet" ich muss also in jedem step die kurve zeichnenlassen, ich wil aber einfach den bildschirm NICHT "resettet" haben so dass ohne weiteres zeichnen die urve imme rnoch vorhanden ist, das geht doch bei jeder programmiersprache ! nur bei GM nicht -_-.

    ich habs mal mit surfaces probiert, nur habe ich da probleme, denn....

    es gibt 1. merhere kurven 2. diese werden nacheinander gezeichnet.

    damit ich nicht endlos viele surfaces habe lass ich alles in ein einziges surface zeichnen , geht das überhaupt?

    lasse ich das surface (id vom surface ist eine globala variable) von einem object zeichnen sind alle kurven sofort wieder weg, lasse ich von jedem object, das mir eine kurve zeichnet das surface zeichnen, sind die kurven alle da, jedoch ist dort wo "nichts" sein sollte komischer farbiger pixel-schrott,

    grafikfehler? wtf??? außerdem sind die kurven vom letzten programmstart auch noch vorhanden, mache ich ion einem einzigen object dasses den speicher des surfaces freigeben soll, dann geht auch wieder garnichts mehr.

    also entweder geht das so nicht wie ich es haben will oder jmd muss mir surfaces nochmal erklänre, aber etz bitte nicht mit tutorials und erklärungen hier alles vollspammen, habe selbst schonmal n surface erfolgreich verwendet, aber da wurden nicht "kurven" zum selben surface hinzugefügt, sondern am anfang eine einzige sache gedrawt aufs surface und nachher aufm screen gedrawt, SOWAS krieg ich noch hin, also erstmal überlegen bitte ob das was ihr schreibt mir helfen könnte !
  • Du kannst "screen_redraw" (glaube) ausschalten. Ausserdem kannst du im Room die Hintergrund Farbe wegmachen, dann wird auch nich alles Übermalt.
    So far, Schattenphoenix~
    _____________________________________________________________________________
    "Who needs a stairway to heaven...
    If there is an elevator to hell... ?
    "
    - Vergessen
    "Auch ein perfektes Chaos ist etwas vollkommenes."
    - Jean Genet
  • hintergnd farbe nicht übermalt?? was soln das bedeuten?

    um den hitnergrnd gehts ja garnicht.



    mit screen_ befehlen geht da nichts.

    es geht mir ja nicht darum bestimmen zu können WANN etwas gezecihnet wird sondern OB es NICHT gelöscht wird.

    zB bei der wohl einfachsten programmiersprache der welt: turbo pascal (bei nachfolger delphi sicherlich auch) da drawt man irgendetwas aufm bildschirm und das BLEIBT auch da, GM löscht jedoch alles automatisch-

    mein problem ist dass ich nicht sage draw_point(10,10)

    sondern dass der punkt kompliziert berechnet wird und dann löscht ihn GM einfaach wieder vom screen und im nöchsten draw event m usses neu berechnet und gezeichnet werden. das ist 1.ressourcenaufwendig.

    und 2. da die "kurve" die ich zeichne nicht auf einen schlag gezecihnet wird und evtl andere später hinzukommen, müsste ich ja JEDEN einzelnen punkt pro step neu berechnen , da diese ja nirgendwo gespeichert werden, ich könnte jetzt natürlich nen array anlegen, aber hallo! es geht ja darum dass

    GM einfach von anfang an den punkt beibehalten soll und nicht ständig wieder automatisch löschen soll
  • Hallo,
    Dass der Game Maker alles neu zeichnet ist völlig normal. Doch wenn du gern alles übereinander liegen haben möchtest, kannst du im Room unter Background einstellen, ob der Hintergrund neu gezeichnet wird.

    Aber nun mal zum Rechnerischen, wenn das oben genannte nicht zutrifft:
    Du könntest die Punkte im Create Event ein Mal berechnen lassen mit einer FOR oder WHILE Schleife.
    Also solange nicht fertig berechnet worden ist, wird eine Variable um 1 erhöht und es wird weiter gerechnet.
    Danach die berechneten Linien im Draw Event zeichnen lassen.
  • also das mit backgrund color hat funktioniert, danke, aber mit set_automatic_draw hat das nichts zu tun.



    EDIT:

    so wie lösche ich das surface??? surface_free(id) funktioniert wohl nicht gscheit.

    ich h ab nun surface_free(s) dann kam trying to use non-existant surface, also hab ich nachher nochmal s=surface_create(room_width-1,room_heigth-1) gemacht.. nun ist das so dass ich jedesmal wenn ich die taste drücke die das surface löschen soll ich zwischen "alten" surfaces hindurch-cycle und ich die einfach nicht leer kriege.



    edit2:

    zur weiteren erklärung, ein teil wird einmal gezeichnet und bleibt aufm screen, wird nicht mehr gesclöht, ein anderer teil überlappt diesen aber und der ist veränderbar, "löscht" also beim überlappen auf das überlappte und nicht nur sich selbst, deswegen kommt das auf ein surface!, das die besagten eigenschaften hat und bei 0,0 gezeichnet wird im raum, es ist jrecoh zu weit unten und rechts und ich bekomme es nicht "leer" außerdem sind überall farbige pixel aufm ganzen bildschirm in einem bestimmten "muster" , einfach wie ein rießen grafikbug Oo,





    edit:

    nach langen probeiren selber geglückt

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von anti0ogen blau ()

  • Benutzer online 1

    1 Besucher