pixel auf surface löschen

  • GM 8

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

  • pixel auf surface löschen

    der titel sagts eigentlich schon, wie macht man dass? also z.B. kann man ja im sprite-editor mit dem radiergummi pixel löschen, so dass das sprite an dieser stelle transparent ist.
    wenn man die surface erstellt, ist ja anfangs alles transparent, aber wie kann man etwas draufgezeichnetes auch wieder löschen?

    Mfg Alron
  • Ich habs ausprobiert, es geht leider nicht. es zeichnet immer noch schwarz, allerdings nur dort,wo keine anderen farben sind. Hier ist mein Code:

    GML-Quellcode

    1. //mouse_rect gibt an ob die maus sich in einem rechteck befindet; zomm ist der faktor, mit dem die surface gestreckt wird
    2. //pen ist der typ des stifts: 0 = normal, 1 = radiergummi; x/yprevious ist die vorherige mausposition
    3. //an posx/y wird die surface gezeichnet; surpic ist die oberfläche
    4. if(mouse_rect(posx,posy,posx+zoom*width,posy+zoom*height) && mouse_check_button(mb_left))
    5. {
    6. if(pen = 0)
    7. {
    8. surface_set_target(surpic)
    9. draw_point_color(floor((mouse_x-posx)/zoom),floor((mouse_y-posy)/zoom),color)
    10. draw_line_color(floor((xprevious-posx)/zoom),floor((yprevious-posy)/zoom),floor((mouse_x-posx)/zoom),floor((mouse_y-posy)/zoom),color,color)
    11. surface_reset_target()
    12. }
    13. else
    14. {
    15. surface_set_target(surpic)
    16. draw_set_blend_mode(bm_subtract)
    17. draw_point_color(floor((mouse_x-posx)/zoom),floor((mouse_y-posy)/zoom),c_white)
    18. draw_line_color(floor((xprevious-posx)/zoom),floor((yprevious-posy)/zoom),floor((mouse_x-posx)/zoom),floor((mouse_y-posy)/zoom),c_white,c_white)
    19. draw_set_blend_mode(bm_normal)
    20. surface_reset_target()
    21. }
    22. }
    Alles anzeigen

    MfG Alron
  • Ich habs jetzt so gelöst, dass ich die farben verkehrt auf die surface ziechne (also 255-color_get_red usw.)und dann die surface mit bm_subtract(mit dem radiergummi zeichne ich schwarz). das klappt soweit fast, dass einzige problem ist, dass die hellen farben z.T. transparent sind und so nur auf einem weissen background richtig aussehen. so kann man den hintergrund aber nicht mehr vom weiss gezeichneten unterscheiden. :headtouch:
    Hat jemand eine idee wie mann das lösen könnte?

    MfG Alron

    Edit: Ich hab noch mal mit verschiedenen Sachen rumexperimentiert und die wirklich einfache lösung gefunden: einfach draw_set_alpha(0) dann zeichnen dann wieder draw set alpha(1).
    Man braucht keinen blend mode oder so. Trotzdem danke für die antworten.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Alron ()