Inheritance #

NinePatchRect
Table of contents

NinePatchRect #

is_instantiable, Node, core, not_builtin_classes

A control that displays a texture by keeping its corners intact, but tiling its edges and center.

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 edges horizontally or vertically, tiles the center on both axes, and leaves the corners unchanged.

Members #

var axis_stretch_horizontal = AXIS_STRETCH_MODE_STRETCH#

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

var axis_stretch_vertical = AXIS_STRETCH_MODE_STRETCH#

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

var draw_center: bool = true#

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

var mouse_filter = MOUSE_FILTER_IGNORE#

var patch_margin_bottom: int = 0#

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.

var patch_margin_left: int = 0#

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.

var patch_margin_right: int = 0#

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.

var patch_margin_top: int = 0#

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.

var region_rect: Rect2 = Rect2(0, 0, 0, 0)#

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.

var texture: Texture2D#

The node's texture resource.

Methods #

const func get_patch_margin(margin: int enumSide) -> int#

Returns the size of the margin on the specified Side.

func set_patch_margin(value: int) -> void#

Sets the size of the margin on the specified Side to value pixels.

Annotations #

Constants #

const AXIS_STRETCH_MODE_STRETCH = 0 enum AxisStretchMode#

Stretches the center texture across the NinePatchRect. This may cause the texture to be distorted.

const AXIS_STRETCH_MODE_TILE = 1 enum AxisStretchMode#

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.

const AXIS_STRETCH_MODE_TILE_FIT = 2 enum AxisStretchMode#

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.

Constructors #

Enums #

AxisStretchMode#

enum AxisStretchMode { AXIS_STRETCH_MODE_STRETCH = 0, AXIS_STRETCH_MODE_TILE = 1, AXIS_STRETCH_MODE_TILE_FIT = 2, }

Operators #

Signals #

signal texture_changed()#

Emitted when the node's texture changes.

Theme Items #

Tutorials #