NinePatchRect

继承: Control < CanvasItem < Node < Object

显示纹理的控件,会保持角落不变,但平铺边缘和中心。

描述

也叫 9 片式面板,NinePatchRect 能够根据较小的纹理,生成任何大小的干净面板。为了做到这一点,它将纹理分割成 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)

Texture2D

texture

方法

int

get_patch_margin(margin: Side) const

void

set_patch_margin(margin: Side, value: int)


信号

texture_changed() 🔗

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


枚举

enum AxisStretchMode: 🔗

AxisStretchMode AXIS_STRETCH_MODE_STRETCH = 0

在 NinePatchRect 上拉伸中心纹理。这可能会导致纹理失真。

AxisStretchMode AXIS_STRETCH_MODE_TILE = 1

在 NinePatchRect 上重复中心纹理。这不会导致任何可见的失真。 纹理必须是无缝的,这样才能在边缘之间不显示伪影。

AxisStretchMode AXIS_STRETCH_MODE_TILE_FIT = 2

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


属性说明

AxisStretchMode axis_stretch_horizontal = 0 🔗

水平拉伸/平铺时使用的拉伸模式。可能的取值见 AxisStretchMode


AxisStretchMode axis_stretch_vertical = 0 🔗

用于垂直拉伸/平铺的拉伸模式。可能的取值见 AxisStretchMode


bool draw_center = true 🔗

  • void set_draw_center(value: bool)

  • bool is_draw_center_enabled()

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


int patch_margin_bottom = 0 🔗

  • void set_patch_margin(margin: Side, value: int)

  • int get_patch_margin(margin: Side) const

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


int patch_margin_left = 0 🔗

  • void set_patch_margin(margin: Side, value: int)

  • int get_patch_margin(margin: Side) const

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


int patch_margin_right = 0 🔗

  • void set_patch_margin(margin: Side, value: int)

  • int get_patch_margin(margin: Side) const

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


int patch_margin_top = 0 🔗

  • void set_patch_margin(margin: Side, value: int)

  • int get_patch_margin(margin: Side) const

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


Rect2 region_rect = Rect2(0, 0, 0, 0) 🔗

  • void set_region_rect(value: Rect2)

  • Rect2 get_region_rect()

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


Texture2D texture 🔗

节点的纹理资源。


方法说明

int get_patch_margin(margin: Side) const 🔗

返回指定 Side 的边距大小。


void set_patch_margin(margin: Side, value: int) 🔗

将给定 Side 的边距大小设置为 value 像素。