sprite_create_from_screen - aber rund??

  • GM 8

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

  • sprite_create_from_screen - aber rund??

    Hi,

    ich hab schon die SuFu ausreichend genutzt, aber nirgendwo einen Hinweis gefunden. Ich möchte einen Bildausschnitt vom Screen nehmen und zeichen - aber RUND. Mit "sprite_create_from_screen" gibt es jedoch keine Möglichkeit, einen runden Bildschirmausschnitt zu bekommen. Oder doch....?
    Danke für jeden Hinweis schon mal im voraus,
    Archie
    Signatur? Ich überlege mir noch eine. Die besten sind ja schon alle vergeben... :para:
  • Es ergibt auch keinen Sinn, da Sprites gar nicht rund gespeichert werden können, sondern immer nur rechteckig. Du könntest allerdings eine Alphamaske verwenden, die alles außerhalb des Kreises transparent macht und danach dann das Sprite entnehmen. Das müsstest du aber wahrscheinlich über eine Surface lösen, notfalls mit einem temporären Sprite.
  • Falls du damit in Echtzeit etwas machen willst, solltest du es lieber nochmal überdenken, denn die _from_screen Funktionen sind sehr langsam...

    Zum Problem selbst: So direkt geht das nicht, aber man kann es über eine Surface lösen. Einfach einen Sprite vom Screen erstellen und auf eine Surface zeichnen. Dann musst du mit dem Blend mode bm_subtract (sieh dir dazu die Hilfe an) einen Sprite den du selbst gemacht hat und der nur aus einem Rahmen mit dem Lock darin besteht, drawen.

    Der erwähnte blend mode sorgt dafür dass der Rahmen "subtrahiert" wird, also auf der Surface durchsichtig bzw. unsichtbar wird.
    Aus der Surface kannst du dann wieder ein Sprite machen, wobei es schneller ist gleich die Surface zu zeichnen...

    Vergiss nur nicht den Blendmode nach dem drawen des Rahmens, auf bm_normal zurückzustellen.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Also es ist wohl doch sinnvoller, vorher nochmal in die Hilfe zu schauen, nicht nur drauflos zu schreiben, da gäbe es was. Hier jetzt nochmal deutlicher das, was ich meinte, und was eine weitere Möglichkeit neben der von DragonGamer genannten wäre:

    Zuerst mit

    GML-Quellcode

    1. neu = sprite_create_from_screen(x,y,w,h,removeback,smooth,xorig,yorig) //Name ist egal
    den Teil als neues Sprite hinzufügen, den du brauchst und dann mit

    GML-Quellcode

    1. sprite_set_alpha_from_sprite(neu,spr_alphamaske)
    die Runde Form ausschneiden.
    Die Alphamaske muss in diesem ein weißer Kreis auf schwarzem Hintergrund sein (Keine Transparenz!).
  • Nekaida schrieb:


    Zuerst mit

    GML-Quellcode

    1. neu = sprite_create_from_screen(x,y,w,h,removeback,smooth,xorig,yorig) //Name ist egal
    den Teil als neues Sprite hinzufügen, den du brauchst und dann mit

    GML-Quellcode

    1. sprite_set_alpha_from_sprite(neu,spr_alphamaske)
    die Runde Form ausschneiden.
    Die Alphamaske muss in diesem ein weißer Kreis auf schwarzem Hintergrund sein (Keine Transparenz!).


    Oh, daran habe ich garnicht gedacht ><
    Sorry, ja die Mthode ist deutlich einfacher zu coden.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)