NinePatchRect

Inherits: Control < CanvasItem < Node < Object

Scalable texture-based frame that tiles the texture's centers and sides, but keeps the corners' original size. Perfect for panels and dialog boxes.

Description

Also known as 9-slice panels, NinePatchRect produces clean panels of any size, based on a small texture. To do so, it splits the texture in a 3×3 grid. When you scale the node, it tiles the texture's sides horizontally or vertically, the center on both axes but it doesn't scale or tile the corners.

Properties

AxisStretchMode

axis_stretch_horizontal

0

AxisStretchMode

axis_stretch_vertical

0

bool

draw_center

true

MouseFilter

mouse_filter

2 (parent override)

int

patch_margin_bottom

0

int

patch_margin_left

0

int

patch_margin_right

0

int

patch_margin_top

0

Rect2

region_rect

Rect2( 0, 0, 0, 0 )

Texture

texture

Methods

int

get_patch_margin ( Margin margin ) const

void

set_patch_margin ( Margin margin, int value )

Signals

  • texture_changed ( )

Emitted when the node's texture changes.

Enumerations

enum AxisStretchMode:

  • AXIS_STRETCH_MODE_STRETCH = 0 --- Stretches the center texture across the NinePatchRect. This may cause the texture to be distorted.

  • AXIS_STRETCH_MODE_TILE = 1 --- Repeats the center texture across the NinePatchRect. This won't cause any visible distortion. The texture must be seamless for this to work without displaying artifacts between edges.

Note: Only supported when using the GLES3 renderer. When using the GLES2 renderer, this will behave like AXIS_STRETCH_MODE_STRETCH.

  • AXIS_STRETCH_MODE_TILE_FIT = 2 --- Repeats the center texture across the NinePatchRect, but will also stretch the texture to make sure each tile is visible in full. This may cause the texture to be distorted, but less than AXIS_STRETCH_MODE_STRETCH. The texture must be seamless for this to work without displaying artifacts between edges.

Note: Only supported when using the GLES3 renderer. When using the GLES2 renderer, this will behave like AXIS_STRETCH_MODE_STRETCH.

Property Descriptions

Default

0

Setter

set_h_axis_stretch_mode(value)

Getter

get_h_axis_stretch_mode()

The stretch mode to use for horizontal stretching/tiling. See AxisStretchMode for possible values.


Default

0

Setter

set_v_axis_stretch_mode(value)

Getter

get_v_axis_stretch_mode()

The stretch mode to use for vertical stretching/tiling. See AxisStretchMode for possible values.


Default

true

Setter

set_draw_center(value)

Getter

is_draw_center_enabled()

If true, draw the panel's center. Else, only draw the 9-slice's borders.


  • int patch_margin_bottom

Default

0

Setter

set_patch_margin(value)

Getter

get_patch_margin()

The height of the 9-slice's bottom row. A margin of 16 means the 9-slice's bottom corners and side will have a height of 16 pixels. You can set all 4 margin values individually to create panels with non-uniform borders.


  • int patch_margin_left

Default

0

Setter

set_patch_margin(value)

Getter

get_patch_margin()

The width of the 9-slice's left column. A margin of 16 means the 9-slice's left corners and side will have a width of 16 pixels. You can set all 4 margin values individually to create panels with non-uniform borders.


  • int patch_margin_right

Default

0

Setter

set_patch_margin(value)

Getter

get_patch_margin()

The width of the 9-slice's right column. A margin of 16 means the 9-slice's right corners and side will have a width of 16 pixels. You can set all 4 margin values individually to create panels with non-uniform borders.


  • int patch_margin_top

Default

0

Setter

set_patch_margin(value)

Getter

get_patch_margin()

The height of the 9-slice's top row. A margin of 16 means the 9-slice's top corners and side will have a height of 16 pixels. You can set all 4 margin values individually to create panels with non-uniform borders.


Default

Rect2( 0, 0, 0, 0 )

Setter

set_region_rect(value)

Getter

get_region_rect()

Rectangular region of the texture to sample from. If you're working with an atlas, use this property to define the area the 9-slice should use. All other properties are relative to this one. If the rect is empty, NinePatchRect will use the whole texture.


Setter

set_texture(value)

Getter

get_texture()

The node's texture resource.

Method Descriptions

  • int get_patch_margin ( Margin margin ) const

Returns the size of the margin identified by the given Margin constant.


  • void set_patch_margin ( Margin margin, int value )

Sets the size of the margin identified by the given Margin constant to value in pixels.