NinePatchRect

Inherits: Control < CanvasItem < Node < Object

可扩展的基于纹理的框架,对纹理的中心和侧面进行拼接,但保持角落的原始尺寸。非常适用于面板和对话框。

描述

NinePatchRect也被称为9片式面板,它基于一个小的纹理,产生任何尺寸的干净面板。为了做到这一点,它将纹理分割成3×3的网格。当你缩放节点时,它在水平或垂直方向上平铺纹理的两侧,在两个轴上平铺中心,但它不会缩放或平铺角部。

属性

AxisStretchMode

axis_stretch_horizontal

0

AxisStretchMode

axis_stretch_vertical

0

bool

draw_center

true

MouseFilter

mouse_filter

2 (overrides Control)

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

方法

int

get_patch_margin ( Margin margin ) const

void

set_patch_margin ( Margin margin, int value )

信号

  • texture_changed ( )

当节点的纹理发生变化时触发。

枚举

enum AxisStretchMode:

  • AXIS_STRETCH_MODE_STRETCH = 0 —- 将中间纹理拉伸到9切片矩形。这可能会导致纹理失真。

  • AXIS_STRETCH_MODE_TILE = 1 —- 在 NinePatchRect 上重复中心纹理。这不会导致任何可见的失真。纹理必须是无缝的,这样才能在边缘之间不显示伪影的情况下工作。

注: 仅在使用 GLES3 渲染器时支持。使用 GLES2 渲染器时,这将类似于 AXIS_STRETCH_MODE_STRETCH

  • AXIS_STRETCH_MODE_TILE_FIT = 2 —- 在 NinePatchRect 上重复中心纹理,但也会拉伸纹理以确保每个图块都完整可见。这可能会导致纹理扭曲,但小于 AXIS_STRETCH_MODE_STRETCH。纹理必须是无缝的,这样才能在边缘之间不显示伪影的情况下工作。

注: 仅在使用 GLES3 渲染器时支持。使用 GLES2 渲染器时,这将类似于 AXIS_STRETCH_MODE_STRETCH

属性说明

Default

0

Setter

set_h_axis_stretch_mode(value)

Getter

get_h_axis_stretch_mode()

水平拉伸/平铺时使用的拉伸模式。参阅AxisStretchMode


Default

0

Setter

set_v_axis_stretch_mode(value)

Getter

get_v_axis_stretch_mode()

用于垂直拉伸/平铺的拉伸模式。参阅AxisStretchMode


Default

true

Setter

set_draw_center(value)

Getter

is_draw_center_enabled()

如果true,则绘制面板的中心。否则,只画9-slice的边框。


  • int patch_margin_bottom

Default

0

Setter

set_patch_margin(value)

Getter

get_patch_margin()

9-slice的底层行的高度。边距为16意味着9片的底角和侧面将有16像素的高度。你可以单独设置所有4个边距值来创建具有非统一边框的面板。


  • int patch_margin_left

Default

0

Setter

set_patch_margin(value)

Getter

get_patch_margin()

9-切片的左列宽度。边距为16意味着9切片的左角和侧面将有16像素的宽度。你可以单独设置所有4个边距值,来创建有非统一边框的面板。


  • int patch_margin_right

Default

0

Setter

set_patch_margin(value)

Getter

get_patch_margin()

9-切片的右列宽度。边距为16意味着9切片的右角和侧面将有16像素的宽度。你可以单独设置所有4个边距值,以创建有非统一边框的面板。


  • int patch_margin_top

Default

0

Setter

set_patch_margin(value)

Getter

get_patch_margin()

9切片的顶行的高度。边距为16意味着9切片的顶角和侧面将有16像素的高度。你可以单独设置所有4个边距值,来创建有非统一边框的面板。


Default

Rect2( 0, 0, 0, 0 )

Setter

set_region_rect(value)

Getter

get_region_rect()

要取样的纹理的矩形区域。如果你正在使用一个图集,使用这个属性来定义9-slice应该使用的区域。所有其他属性都是相对于这个属性而言的。如果矩形为空,NinePatchRect将使用整个纹理。


Setter

set_texture(value)

Getter

get_texture()

节点的纹理资源。

方法说明

  • int get_patch_margin ( Margin margin ) const

返回由给定的Margin常量标识的边距大小。


  • void set_patch_margin ( Margin margin, int value )

将由给定的Margin常量标识的边距大小设置为value,单位为像素。