Boden mit Maske auf Surface malen

    • GM 8

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Boden mit Maske auf Surface malen

      Hallo.
      Ich habe auf ein Surface mit draw_background einen Hintegrund (Boden) gezeichnet. Dieser geht über das gesammte Surface. Nun kennt Ihr vielleicht aus verschiedenen Editoren von Spielen die Funktion, dass man eine andere Bodentextur aufmalen kann. Meine Textur ist 512x512 Pixel groß. Das eine Problem habe ich zumindest schon teilweise gelöst. Es soll nämlich nicht immer nur ein kleiner Teil der großen Textur aufgemalt werden, sondern immer der nächste Teil. Hoffe dass ist verständlich. Also wie wenn die aufzumalende Textur unter der anderen liegt, und dort wo man malt, scheint sie eben surch. Wenn man jetzt zB. nach rechts hinübermalt und der Malbereich wird größer als 512 Pixel, so soll die Textur wieder bei 0 beginnen, also wiederholt werden.
      Außerdem sollte die Textur mit einer runden Maske aufgemalt werden können, die am Rand heller wird. Ich hab schon ein kleiners Beispiel gemacht. Allerdings kann man da zurzeit nur eine Textur mit 512x512 Pixel eckig aufmalen. Irgendwie habe ich keinen Plan wie ich da weitermachen soll, und ob es mit den GM Funktionen überhaupt möglich ist, einen Background mit einer Maske auf ein Surface zu zeichnen. Kennt ihr ansonsten vielleicht eine DLL?
      Es ist auch noch ein Bild dabei, wie das aussehen soll.
      Hier der Link zu meinem Beispiel:
      http://www.box.net/shared/zd6oihj9fm
      Bilder
      • GroundExample.jpg

        77,91 kB, 512×512, 308 mal angesehen
    • Und wenn du diese Steintextur mit draw_background_tiled(back,x,y) drawst, damit sie den ganzen Raum ausfüllt? Das Suface mit der Wiese braucht dann halt ne höhere depth, damit die Wiese über der Steintextur ist. Und dann halt mit nem gewissen Blendmode, weiß jetzt nicht welchen, drawen wo Stein sein soll. Also im Prinzip drawt man dann nicht sondern"löscht" die Wiese an der Stelle.

      Aber wahrscheinlich hilft dir das jetzt auch wenig, weil du bestimmt verschiedene Texturen gleichzeitig haben möchtest, oder?

      Ps: Sorry, kann mich heut schlecht ausdrücken. Sind so Nachwirkungen vom Feiern :)
      Anderer Leuten Signaturen sind... anderer Leuten Signaturen!


    • Genau das ist das Problem. Ich hab ja auch schon daran gedacht die Steintextur darunter zu zeichnen. Aber man kann ja dann später mehrere Texturen aufmalen. Man müsste dann alle Texturen untereinander zeichnen und die anderen davorliegenden dann komplett transparent machen. Aber muss ich dann nicht für jede Textur ein eigenes Surface drawen. Kennt da keiner eine DLL (oder gibt es überhaupt schon eine), sowie zB. die GMEffect dll. Möglich müsste das schon irgendwie sein.
    • wie wärs wenn du die Steintextur darunter innerhalb einer for schleife zeichnest, die dann die dimension des mausbereiches, indem du zeichnest annimmt? Dann kannst du auch mehrere verschiedene Texturen darunter zeichnen lassen.

      © 2008 by Teamgrill Productions
    • Ja das löst glaub ich das eine Problem. Aber wie mach ich dann die obere Textur transparent. Das ganze soll ja mit einer Maske funktionieren. Sodass das wie in meinem ersten Bild aussieht. Oder kann ich einfach die Maske mit einem Blendmode auf das Surface zeichnen? Werde das mal probieren.
    • Du kannst die die Maske auf ein Surface zeichnen (Graustufen) und dann ein Sprite daraus erstellen und dieses Sprite bzw Background als Alphamask für das Ursprüngliche Sprite/Background nehmen.

      © 2008 by Teamgrill Productions
    • Sehr gut Danke. Das funktioniert alles gut.
      Hier mal die neue Datei:
      http://www.box.net/shared/7dt8tkcpjo
      Allerdings gibt es noch ein kleines Problem: Wenn man auf der Maustaste bleibt, werden die Ränder immer schärfer. Kann man das irgendwie umgehen. Hab schon daran gedacht, dass das nächste Sprite einfach wieder gezeichnet wird, wenn die Maus bewegt wurde, aber das ist zu knapp. Vielleicht muss ich noch die Bewegungsdistanz messen. Oder hast du eine bessere Idee?

      edit: Ja wenn dazwischen eine Distanz von 20px liegt, klappt das ganz gut.
      edit: Das Problem ist halt noch, dass ich nicht mehrere Texturen zeichnen kann. Wie meinst du das genau mit der for-Schleife?

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von peini ()

    • Benutzer online 1

      1 Besucher