Draw GUI
Event
The Draw Gui event type falls under the Draw Event category and are specifically
designed for drawing GUI (Graphical User Interface) elements that
are not affected by the view scale or rotation. This means that you
can have an instance draw all the elements for your HUD without
having to base all the positioning on the position within the room
of the instance and the position of the current view either.
When drawing in these event it is important that you understand
that the draw coordinates do not change even when views are
active and 0,0 is always the top left hand corner of either the
application surface or the display (see the note at the bottom of
this section), and the default width and height are 1:1 with the
application surface. Depth ordering is still maintained between
different instances (so an instance at a low depth will draw over
one at a higher depth) and also within the events themselves, as
the Draw GUI Begin event will draw for all instances first,
then the standard Draw GUI will draw for all instances over
that, and finally the Draw Gui End event is triggered.
In this way, you can draw things or set draw properties in the Draw
GUI Begin step in one instance and be sure that all instances with
a standard Draw GUI event or Draw GUI End event will use these
properties or draw over what the first instance has drawn.
Basically its a sure fire way to guarantee that certain things are
drawn at certain times, much like the Begin Step and End
Step events do.
These events can also be used in conjunction with the normal Draw
events (which will be affected by the view position, scale
and rotation as normal). If you have no Draw Event but you
do have a Draw GUI Event, then GameMaker: Studio will
still default draw the sprite for the instance (if it has one) as
normal.
You may notice depth issues when using this event due to the fact
that it is not dealt with the same was as the traditional
draw event. What happens is that the normal draw events for all
instances are resolved first, once each for each active view, and
then the draw GUI events for all instances are resolved. So
the depth order between instances with draw GUI events is always
respected, as is the depth order between instances with normal draw
events, but the draw GUI events will always draw over
anything drawn in the normal draw event, even if the instance doing
the drawing it is at a higher depth than other instances.
NOTE: This event will, by default, draw 1:1 with the application surface size, which is normally the size of the room or the view port. This means that when you have Aspect Ratio Correction on in the Global Game Settings the GUI is not going to be drawn over the black bars that "letterbox" the game. This behaviour can be switched off using the display_set_gui_maximise function, and you can also lock the GUI event to a specific size which will then be scaled to fit the display or application surface dimensions automatically by using the function display_set_gui_size.