Windows Button ohne Image drawen

    • Skript

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

    • Windows Button ohne Image drawen

      Hallo erstmal,
      da ich in meinen Programmen gerne Windows Buttens verwende, musste ich mir zuerst immer für die größe die ich brauche von irgendwo ein Gif Bild besorgen,
      danach hab ich Winapi probiert aber das war mir zu umständlich(8)).Also hab ich den folgenden Code entwickelt:
      draw_windows_button(x1,y1,x2,y2,str/sprite)(ich wäre über andre Namensvorschläge erfreut ;) )
      Spoiler anzeigen

      GML-Quellcode

      1. xx=argument0
      2. yy=argument1
      3. w=argument2-argument0
      4. h=argument3-argument1
      5. str=argument4
      6. //butten nach modus drawen
      7. if mouse_x>xx && mouse_y>yy && mouse_x<xx+w && mouse_y<yy+h && !mouse_check_button(mb_left)
      8. {
      9. draw_set_alpha(1)
      10. draw_rectangle_color(xx+3,yy+3,xx+w-4,yy+h-3,16645368,16645368,14140870,14140870,0)
      11. draw_rectangle_color(xx+2,yy+3,xx+w-3,yy+h-3,9033981,9033981,38885,38885,1)
      12. draw_rectangle_color(xx+3,yy+3,xx+w-4,yy+h-4,9033981,9033981,3191544,3191544,1)
      13. }
      14. else if mouse_x>xx && mouse_y>yy && mouse_x<xx+w && mouse_y<yy+h && mouse_check_button(mb_left)
      15. {
      16. draw_set_alpha(1)
      17. draw_rectangle_color(xx+3,yy+3,xx+w-4,yy+h-3,12430252,12430252,16645368,16645368,0)
      18. }
      19. else
      20. {
      21. draw_set_alpha(1)
      22. draw_rectangle_color(xx+3,yy+2,xx+w-4,yy+h-3,16645368,16645368,14140870,14140870,0)
      23. }
      24. draw_line_color(xx+3,yy+1,xx+w-3,yy+1,7617536,7617536)//oben
      25. draw_line_color(xx+1,yy+3,xx+1,yy+h-3,7617536,7617536)//links
      26. draw_line_color(xx+w-2,yy+3,xx+w-2,yy+h-3,7617536,7617536)//rechts
      27. draw_line_color(xx+3,yy+h-2,xx+w-3,yy+h-2,7617536,7617536)//unten
      28. draw_set_alpha(0.65)
      29. draw_point_color(xx+2,yy+2,7617536)
      30. draw_point_color(xx+2,yy+h-3,7617536)
      31. draw_point_color(xx+w-3,yy+h-3,7617536)
      32. draw_point_color(xx+w-3,yy+2,7617536)
      33. draw_set_alpha(0.4)
      34. draw_point_color(xx+1,yy+2,7617536)//LO
      35. draw_point_color(xx+2,yy+1,7617536)//LO
      36. draw_point_color(xx+1,yy+h-3,7617536)//LU
      37. draw_point_color(xx+2,yy+h-2,7617536)//LU
      38. draw_point_color(xx+w-2,yy+h-3,7617536)//RU
      39. draw_point_color(xx+w-3,yy+h-2,7617536)//RU
      40. draw_point_color(xx+w-2,yy+2,7617536)//RO
      41. draw_point_color(xx+w-3,yy+1,7617536)//RO
      42. draw_set_halign(fa_center)
      43. draw_set_valign(fa_middle)
      44. draw_set_alpha(1)
      45. if is_string(str)
      46. {
      47. draw_text(xx+round(w/4)*2,yy+round(h/4)*2,string(str))
      48. }
      49. else if is_real(str)
      50. {
      51. draw_sprite(str,1,xx+round(w/4)*2,yy+round(h/4)*2)
      52. }
      53. if mouse_x>xx && mouse_y>yy && mouse_x<xx+w && mouse_y<yy+h && mouse_check_button_released(mb_left)
      54. {
      55. return(1)
      56. }
      Alles anzeigen

      x1,y1,x2,y2 dürfte klar sein
      str ist der text der korrekt auf den button gedrawt wird oder der name des sprites das gezeichnet werden soll (ohne "")
      Man kann es so verwenden:

      GML-Quellcode

      1. if draw_windows_button(0,0,75,23,"Press")
      2. {
      3. //blablabla
      4. }
      5. //oder
      6. if draw_windows_button(0,0,45,95,spr)
      7. {
      8. //blablabla
      9. }

      Screenshot:

      Gibt 1 zurück wenn der User den Button loslässt!
      Es gehört ausserdem ins Draw_Event :rolleyes:
      Ein typisches Maß für Buttons ist übrigens 75,23
      Und die typische Schriftart ist MS Sans Serif
      viel Spaß
      P.s.über feedbacks wäre ich sehr erfreut :D

      Dieser Beitrag wurde bereits 15 mal editiert, zuletzt von whiterock ()

    • danke für die kommentare ich hab übrigens gerade ne neue version herausgebarcht und werd es beifügen, dass es ins draw_event gehört.
      Was meint ihr soll ich den Bedankomat aktivieren oder ist das überflüssig ?(
      Edit: Screenshot angefügt! :)
      Edit2: Wegen der Schriftart, die kann man ja einfach mit draw_set_font bestimmen und die schriftfarbe mit draw_set_color (siehe Update) :thumbup:
      Neues Feature:
      Wenn man keinen str bei str/sprite sondern den namen eines sprite (ohne Anführungszeichen) wird dieses sprite exakt auf den button gedrawt!!!!
      (siehe coolen Screenshot, erster post)

      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von whiterock ()