CanvasItem

Наследует: Node < Object

Наследуется от: Control, Node2D

Абстрактный базовый класс для всего, что находится в двумерном пространстве.

Описание

Абстрактный базовый класс для всего в 2D-пространстве. Элементы холста располагаются в дереве; дочерние элементы наследуют и расширяют преобразование своего родителя. CanvasItem расширяется Control для узлов, связанных с GUI, и Node2D для 2D-игровых объектов.

Любой CanvasItem может рисовать. Для этого движок вызывает queue_redraw(), затем во время простоя будет получена NOTIFICATION_DRAW для запроса перерисовки. Благодаря этому элементы холста не нужно перерисовывать в каждом кадре, что значительно повышает производительность. Предоставляется несколько функций для рисования на CanvasItem (см. функции draw_*). Однако их можно использовать только внутри _draw(), соответствующего ему Object._notification() или методов, связанных с сигналом draw.

Элементы холста рисуются в древовидном порядке на своем слое холста. По умолчанию дочерние элементы находятся поверх своих родителей, поэтому корневой CanvasItem будет отрисован позади всего. Это поведение можно изменить для каждого элемента.

CanvasItem может быть скрыт, что также скроет его дочерние элементы. Изменяя различные другие свойства CanvasItem, вы также можете модулировать его цвет (через modulate или self_modulate), изменять его Z-индекс, режим смешивания и многое другое.

Обратите внимание, что такие свойства, как преобразование, модуляция и видимость, распространяются только на direct дочерние узлы CanvasItem. Если между ними есть узел, не являющийся CanvasItem, например Node или AnimationPlayer, то узлы CanvasItem ниже будут иметь независимую позицию и цепочку modulate. См. также top_level.

Обучающие материалы

Свойства

ClipChildrenMode

clip_children

0

int

light_mask

1

Material

material

Color

modulate

Color(1, 1, 1, 1)

Color

self_modulate

Color(1, 1, 1, 1)

bool

show_behind_parent

false

TextureFilter

texture_filter

0

TextureRepeat

texture_repeat

0

bool

top_level

false

bool

use_parent_material

false

int

visibility_layer

1

bool

visible

true

bool

y_sort_enabled

false

bool

z_as_relative

true

int

z_index

0

Методы

void

_draw() virtual

void

draw_animation_slice(animation_length: float, slice_begin: float, slice_end: float, offset: float = 0.0)

void

draw_arc(center: Vector2, radius: float, start_angle: float, end_angle: float, point_count: int, color: Color, width: float = -1.0, antialiased: bool = false)

void

draw_char(font: Font, pos: Vector2, char: String, font_size: int = 16, modulate: Color = Color(1, 1, 1, 1), oversampling: float = 0.0) const

void

draw_char_outline(font: Font, pos: Vector2, char: String, font_size: int = 16, size: int = -1, modulate: Color = Color(1, 1, 1, 1), oversampling: float = 0.0) const

void

draw_circle(position: Vector2, radius: float, color: Color, filled: bool = true, width: float = -1.0, antialiased: bool = false)

void

draw_colored_polygon(points: PackedVector2Array, color: Color, uvs: PackedVector2Array = PackedVector2Array(), texture: Texture2D = null)

void

draw_dashed_line(from: Vector2, to: Vector2, color: Color, width: float = -1.0, dash: float = 2.0, aligned: bool = true, antialiased: bool = false)

void

draw_ellipse(position: Vector2, major: float, minor: float, color: Color, filled: bool = true, width: float = -1.0, antialiased: bool = false)

void

draw_ellipse_arc(center: Vector2, major: float, minor: float, start_angle: float, end_angle: float, point_count: int, color: Color, width: float = -1.0, antialiased: bool = false)

void

draw_end_animation()

void

draw_lcd_texture_rect_region(texture: Texture2D, rect: Rect2, src_rect: Rect2, modulate: Color = Color(1, 1, 1, 1))

void

draw_line(from: Vector2, to: Vector2, color: Color, width: float = -1.0, antialiased: bool = false)

void

draw_mesh(mesh: Mesh, texture: Texture2D, transform: Transform2D = Transform2D(1, 0, 0, 1, 0, 0), modulate: Color = Color(1, 1, 1, 1))

void

draw_msdf_texture_rect_region(texture: Texture2D, rect: Rect2, src_rect: Rect2, modulate: Color = Color(1, 1, 1, 1), outline: float = 0.0, pixel_range: float = 4.0, scale: float = 1.0)

void

draw_multiline(points: PackedVector2Array, color: Color, width: float = -1.0, antialiased: bool = false)

void

draw_multiline_colors(points: PackedVector2Array, colors: PackedColorArray, width: float = -1.0, antialiased: bool = false)

void

draw_multiline_string(font: Font, pos: Vector2, text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, max_lines: int = -1, modulate: Color = Color(1, 1, 1, 1), brk_flags: BitField[LineBreakFlag] = 3, justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0, oversampling: float = 0.0) const

void

draw_multiline_string_outline(font: Font, pos: Vector2, text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, max_lines: int = -1, size: int = 1, modulate: Color = Color(1, 1, 1, 1), brk_flags: BitField[LineBreakFlag] = 3, justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0, oversampling: float = 0.0) const

void

draw_multimesh(multimesh: MultiMesh, texture: Texture2D)

void

draw_polygon(points: PackedVector2Array, colors: PackedColorArray, uvs: PackedVector2Array = PackedVector2Array(), texture: Texture2D = null)

void

draw_polyline(points: PackedVector2Array, color: Color, width: float = -1.0, antialiased: bool = false)

void

draw_polyline_colors(points: PackedVector2Array, colors: PackedColorArray, width: float = -1.0, antialiased: bool = false)

void

draw_primitive(points: PackedVector2Array, colors: PackedColorArray, uvs: PackedVector2Array, texture: Texture2D = null)

void

draw_rect(rect: Rect2, color: Color, filled: bool = true, width: float = -1.0, antialiased: bool = false)

void

draw_set_transform(position: Vector2, rotation: float = 0.0, scale: Vector2 = Vector2(1, 1))

void

draw_set_transform_matrix(xform: Transform2D)

void

draw_string(font: Font, pos: Vector2, text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, modulate: Color = Color(1, 1, 1, 1), justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0, oversampling: float = 0.0) const

void

draw_string_outline(font: Font, pos: Vector2, text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, size: int = 1, modulate: Color = Color(1, 1, 1, 1), justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0, oversampling: float = 0.0) const

void

draw_style_box(style_box: StyleBox, rect: Rect2)

void

draw_texture(texture: Texture2D, position: Vector2, modulate: Color = Color(1, 1, 1, 1))

void

draw_texture_rect(texture: Texture2D, rect: Rect2, tile: bool, modulate: Color = Color(1, 1, 1, 1), transpose: bool = false)

void

draw_texture_rect_region(texture: Texture2D, rect: Rect2, src_rect: Rect2, modulate: Color = Color(1, 1, 1, 1), transpose: bool = false, clip_uv: bool = true)

void

force_update_transform()

RID

get_canvas() const

RID

get_canvas_item() const

CanvasLayer

get_canvas_layer_node() const

Transform2D

get_canvas_transform() const

Vector2

get_global_mouse_position() const

Transform2D

get_global_transform() const

Transform2D

get_global_transform_with_canvas() const

Variant

get_instance_shader_parameter(name: StringName) const

Vector2

get_local_mouse_position() const

Transform2D

get_screen_transform() const

Transform2D

get_transform() const

Rect2

get_viewport_rect() const

Transform2D

get_viewport_transform() const

bool

get_visibility_layer_bit(layer: int) const

World2D

get_world_2d() const

void

hide()

bool

is_local_transform_notification_enabled() const

bool

is_transform_notification_enabled() const

bool

is_visible_in_tree() const

Vector2

make_canvas_position_local(viewport_point: Vector2) const

InputEvent

make_input_local(event: InputEvent) const

void

move_to_front()

void

queue_redraw()

void

set_instance_shader_parameter(name: StringName, value: Variant)

void

set_notify_local_transform(enable: bool)

void

set_notify_transform(enable: bool)

void

set_visibility_layer_bit(layer: int, enabled: bool)

void

show()


Сигналы

draw() 🔗

Вызывается, когда CanvasItem должен перерисоваться, после соответствующего уведомления NOTIFICATION_DRAW и до вызова _draw().

Примечание: Отложенные соединения не позволяют рисовать через методы draw_*.


hidden() 🔗

Выдается, когда этот узел становится скрытым, т.е. он больше не виден в дереве (см. is_visible_in_tree()).


item_rect_changed() 🔗

Вызывается при изменении границ CanvasItem (положения или размера) или при выполнении действия, которое могло повлиять на эти границы (например, изменение Sprite2D.texture).


visibility_changed() 🔗

Выдается при изменении видимости CanvasItem, либо из-за изменения его собственного свойства visible, либо из-за изменения его видимости в дереве (см. is_visible_in_tree()).

Этот сигнал выдается после связанного уведомления NOTIFICATION_VISIBILITY_CHANGED.


Перечисления

enum TextureFilter: 🔗

TextureFilter TEXTURE_FILTER_PARENT_NODE = 0

CanvasItem унаследует фильтр от своего родителя.

TextureFilter TEXTURE_FILTER_NEAREST = 1

Фильтр текстуры считывает только ближайший пиксель. Это делает текстуру пикселизированной вблизи и зернистой на расстоянии (из-за того, что mip-карты не сэмплируются).

TextureFilter TEXTURE_FILTER_LINEAR = 2

Фильтр текстуры смешивает ближайшие 4 пикселя. Это делает текстуру гладкой вблизи и зернистой на расстоянии (из-за того, что mip-карты не сэмплируются).

TextureFilter TEXTURE_FILTER_NEAREST_WITH_MIPMAPS = 3

Фильтр текстуры считывает данные с ближайшего пикселя и смешивает данные между двумя ближайшими mip-картами (или использует ближайшую mip-карту, если ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter имеет значение true). Это делает текстуру пикселизированной вблизи и гладкой на расстоянии.

Используйте это для текстур, не являющихся пиксельным искусством, которые можно просматривать в низком масштабе (например, из-за масштабирования Camera2D или масштабирования спрайтов), поскольку mip-карты важны для сглаживания пикселей, которые меньше пикселей на экране.

TextureFilter TEXTURE_FILTER_LINEAR_WITH_MIPMAPS = 4

Фильтр текстуры смешивает ближайшие 4 пикселя и ближайшие 2 mip-карты (или использует ближайшую mip-карту, если ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter имеет значение true). Это делает текстуру гладкой вблизи и гладкой на расстоянии.

Используйте это для текстур непиксельной графики, которые можно просматривать в низком масштабе (например, из-за масштабирования Camera2D или масштабирования спрайтов), поскольку mip-карты важны для сглаживания пикселей, которые меньше пикселей на экране.

TextureFilter TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC = 5

Текстурный фильтр считывает данные с ближайшего пикселя и смешивает два mip-текстурных отображения (или использует ближайшее mip-текстурное отображение, если ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter имеет значение true) на основе угла между поверхностью и видом камеры. Это делает текстуру пикселизированной вблизи и гладкой на расстоянии. Анизотропная фильтрация улучшает качество текстуры на поверхностях, которые почти совпадают с камерой, но работает немного медленнее. Уровень анизотропной фильтрации можно изменить, настроив ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level.

Примечание: Этот текстурный фильтр редко бывает полезен в 2D-проектах. TEXTURE_FILTER_NEAREST_WITH_MIPMAPS обычно более подходит в этом случае.

TextureFilter TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC = 6

Фильтр текстуры смешивает ближайшие 4 пикселя и смешивает 2 mip-карты (или использует ближайшую mip-карту, если ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter имеет значение true) на основе угла между поверхностью и видом камеры. Это делает текстуру гладкой вблизи и гладкой на расстоянии. Анизотропная фильтрация улучшает качество текстуры на поверхностях, которые почти совпадают с камерой, но немного медленнее. Уровень анизотропной фильтрации можно изменить, настроив ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level.

Примечание: Этот фильтр текстуры редко полезен в 2D-проектах. TEXTURE_FILTER_LINEAR_WITH_MIPMAPS обычно более подходит в этом случае.

TextureFilter TEXTURE_FILTER_MAX = 7

Представляет размер перечисления TextureFilter.


enum TextureRepeat: 🔗

TextureRepeat TEXTURE_REPEAT_PARENT_NODE = 0

CanvasItem унаследует фильтр от своего родителя.

TextureRepeat TEXTURE_REPEAT_DISABLED = 1

Текстура не повторяется. Выборка текстуры за пределами её границ приведёт к "растяжению" граничных пикселей. Этого можно избежать, обеспечив полностью прозрачную границу шириной в 1 пиксель с каждой стороны текстуры.

TextureRepeat TEXTURE_REPEAT_ENABLED = 2

Текстура повторяется при превышении размера текстуры.

TextureRepeat TEXTURE_REPEAT_MIRROR = 3

Текстура повторяется при превышении размера текстуры в "плиточном режиме 2×2". Повторяющиеся текстуры в четных позициях зеркально отражаются.

TextureRepeat TEXTURE_REPEAT_MAX = 4

Представляет размер перечисления TextureRepeat.


enum ClipChildrenMode: 🔗

ClipChildrenMode CLIP_CHILDREN_DISABLED = 0

Дочерние элементы рисуются поверх этого узла и не обрезаются.

ClipChildrenMode CLIP_CHILDREN_ONLY = 1

Этот узел используется как маска и не рисуется. Маска основана на альфа-канале этого узла: непрозрачные пиксели сохраняются, прозрачные пиксели отбрасываются, а полупрозрачные пиксели смешиваются в соответствии с их непрозрачностью. Потомки обрезаются по рисуемой области этого узла.

ClipChildrenMode CLIP_CHILDREN_AND_DRAW = 2

Этот узел используется как маска и также рисуется. Маска основана на альфа-канале этого узла: непрозрачные пиксели сохраняются, прозрачные пиксели отбрасываются, а полупрозрачные пиксели смешиваются в соответствии с их непрозрачностью. Дочерние элементы обрезаются по рисуемой области родителя.

ClipChildrenMode CLIP_CHILDREN_MAX = 3

Представляет размер перечисления ClipChildrenMode.


Константы

NOTIFICATION_TRANSFORM_CHANGED = 2000 🔗

Уведомление получено, когда изменяется глобальное преобразование этого узла, если is_transform_notification_enabled() равно true. См. также set_notify_transform() и get_transform().

Примечание: Многие элементы холста, такие как Camera2D или CollisionObject2D, автоматически включают это для корректной работы.

NOTIFICATION_LOCAL_TRANSFORM_CHANGED = 35 🔗

Уведомление получено, когда изменяется преобразование этого узла, если is_local_transform_notification_enabled() равно true. Это не получено, когда изменяется преобразование родительского Node2D. См. также set_notify_local_transform().

Примечание: Многие элементы холста, такие как Camera2D или CollisionShape2D, автоматически включают это для корректной работы.

NOTIFICATION_DRAW = 30 🔗

CanvasItem запрашивается для рисования (см. _draw()).

NOTIFICATION_VISIBILITY_CHANGED = 31 🔗

Уведомление получено, когда видимость этого узла изменяется (см. visible и is_visible_in_tree()).

Это уведомление получено до связанного сигнала visibility_changed.

NOTIFICATION_ENTER_CANVAS = 32 🔗

CanvasItem вошел в холст.

NOTIFICATION_EXIT_CANVAS = 33 🔗

CanvasItem вышел за пределы холста.

Это уведомление отправляется в обратном порядке.

NOTIFICATION_WORLD_2D_CHANGED = 36 🔗

Уведомление получено, когда этот CanvasItem зарегистрирован в новом World2D (см. get_world_2d()).


Описания свойств

ClipChildrenMode clip_children = 0 🔗

Режим, в котором этот узел обрезает свои дочерние элементы, действуя как маска.

Примечание: Узлы обрезания не могут быть вложенными или помещены в CanvasGroup. Если предок этого узла обрезает свои дочерние элементы или является CanvasGroup, то режим обрезания этого узла должен быть установлен на CLIP_CHILDREN_DISABLED, чтобы избежать непредвиденного поведения.


int light_mask = 1 🔗

  • void set_light_mask(value: int)

  • int get_light_mask()

Слои рендеринга, в которых этот CanvasItem реагирует на узлы Light2D.


Material material 🔗

Материал, примененный к этому CanvasItem.


Color modulate = Color(1, 1, 1, 1) 🔗

  • void set_modulate(value: Color)

  • Color get_modulate()

Цвет, примененный к этому CanvasItem. Это свойство влияет на дочерние CanvasItem, в отличие от self_modulate, которое влияет только на сам узел.


Color self_modulate = Color(1, 1, 1, 1) 🔗

  • void set_self_modulate(value: Color)

  • Color get_self_modulate()

Цвет, примененный к этому CanvasItem. Это свойство не влияет на дочерние CanvasItem, в отличие от modulate, которое влияет как на сам узел, так и на его дочерние элементы.

Примечание: Внутренние дочерние элементы также не затрагиваются этим свойством (см. параметр include_internal в Node.add_child()). Для встроенных узлов это включает ползунки в ColorPicker и панель вкладок в TabContainer.


bool show_behind_parent = false 🔗

  • void set_draw_behind_parent(value: bool)

  • bool is_draw_behind_parent_enabled()

Если true, этот узел отрисовывается позади своего родителя.


TextureFilter texture_filter = 0 🔗

Режим фильтрации, используемый для рендеринга текстур этого CanvasItem.


TextureRepeat texture_repeat = 0 🔗

Режим повторения, используемый для отрисовки текстур этого CanvasItem. Он влияет на то, что происходит при выборке текстуры за пределами её границ, например, путём установки Sprite2D.region_rect большего размера, чем текстура, или назначения UV-точек Polygon2D за пределами текстуры.

Примечание: TextureRect не подвержен влиянию texture_repeat, поскольку использует собственную реализацию повторения текстуры.


bool top_level = false 🔗

  • void set_as_top_level(value: bool)

  • bool is_set_as_top_level()

Если true, этот CanvasItem не унаследует свое преобразование от родительских CanvasItem. Его порядок отрисовки также будет изменен, чтобы он отрисовывался поверх других CanvasItem, у которых top_level не установлен на true. CanvasItem будет фактически действовать так, как если бы он был помещен в качестве дочернего элемента пустого Node.


bool use_parent_material = false 🔗

  • void set_use_parent_material(value: bool)

  • bool get_use_parent_material()

Если true, то в качестве материала этого узла используется material родительского CanvasItem.


int visibility_layer = 1 🔗

  • void set_visibility_layer(value: int)

  • int get_visibility_layer()

Слой рендеринга, в котором этот CanvasItem отображается узлами Viewport. Viewport будет отображать CanvasItem, если он и все его родительские элементы используют общий слой с маской отсечения холста Viewport.

Примечание: CanvasItem не наследует слои видимости своих родителей. Это означает, что если родительский CanvasItem не имеет всех тех же слоев, что и его дочерний элемент, дочерний элемент может быть невидим, даже если и родительский, и дочерний элементы имеют параметр visible со значением true. Например, если родительский элемент имеет слой 1, а дочерний элемент — слой 2, дочерний элемент не будет виден в Viewport с маской отсечения холста, установленной на слой 1 или 2 (см. Viewport.canvas_cull_mask). Чтобы обеспечить видимость как родительского, так и дочернего элемента, родительский элемент должен иметь слои 1 и 2, или же у дочернего элемента должен быть параметр top_level со значением true.


bool visible = true 🔗

  • void set_visible(value: bool)

  • bool is_visible()

Если true, этот CanvasItem может быть нарисован. Будет ли этот CanvasItem нарисован на самом деле, зависит от видимости всех его предков CanvasItem. Другими словами: этот CanvasItem будет нарисован, когда is_visible_in_tree() вернет true и все предки CanvasItem разделят по крайней мере один vision_layer с этим CanvasItem.

Примечание: Для элементов управления, которые наследуют Popup, правильный способ сделать их видимыми — вызвать вместо этого одну из нескольких функций popup*().


bool y_sort_enabled = false 🔗

  • void set_y_sort_enabled(value: bool)

  • bool is_y_sort_enabled()

Если true, этот и дочерние узлы CanvasItem с более высокой позицией Y отображаются перед узлами с более низкой позицией Y. Если false, этот и дочерние узлы CanvasItem отображаются нормально в порядке дерева сцены.

При включенной сортировке Y на родительском узле ('A'), но отключенной на дочернем узле ('B'), дочерний узел ('B') сортируется, но его дочерние узлы ('C1', 'C2' и т. д.) отображаются вместе на той же позиции Y, что и дочерний узел ('B'). Это позволяет организовать порядок рендеринга сцены, не изменяя дерево сцены.

Узлы сортируются относительно друг друга, только если они находятся на одном и том же z_index.


bool z_as_relative = true 🔗

  • void set_z_as_relative(value: bool)

  • bool is_z_relative()

Если true, конечный Z-индекс этого узла относится к Z-индексу его родителя.

Например, если z_index равен 2, а конечный Z-индекс его родителя равен 3, то конечный Z-индекс этого узла будет равен 5 (2 + 3).


int z_index = 0 🔗

  • void set_z_index(value: int)

  • int get_z_index()

Порядок, в котором отрисовывается этот узел. Узел с более высоким индексом Z будет отображаться поверх других. Должен быть между RenderingServer.CANVAS_ITEM_Z_MIN и RenderingServer.CANVAS_ITEM_Z_MAX (включительно).

Примечание: Индекс Z не влияет на порядок обработки узлов CanvasItem или способ обработки событий ввода. Это особенно важно иметь в виду для узлов Control.


Описания метода

void _draw() virtual 🔗

Вызывается, когда CanvasItem был запрошен для перерисовки (после вызова queue_redraw(), вручную или движком).

Соответствует уведомлению NOTIFICATION_DRAW в Object._notification().


void draw_animation_slice(animation_length: float, slice_begin: float, slice_end: float, offset: float = 0.0) 🔗

Последующие команды рисования будут игнорироваться, если они не попадают в указанный фрагмент анимации. Это более быстрый способ реализовать анимацию, которая зацикливается на фоне, а не перерисовывается постоянно.


void draw_arc(center: Vector2, radius: float, start_angle: float, end_angle: float, point_count: int, color: Color, width: float = -1.0, antialiased: bool = false) 🔗

Рисует незаполненную дугу между заданными углами с равномерными значениями color и width и опциональным сглаживанием (поддерживается только для положительных значений width). Чем больше значение point_count, тем плавнее кривая. center определяется в локальном пространстве. Для эллиптических дуг см. draw_ellipse_arc(). См. также draw_circle().

Если width отрицательное, оно будет проигнорировано, и дуга будет нарисована с использованием RenderingServer.PRIMITIVE_LINE_STRIP. Это означает, что при масштабировании CanvasItem дуга останется тонкой. Если такое поведение нежелательно, передайте положительное значение width, например, 1.0.

Дуга рисуется от start_angle к значению end_angle, то есть по часовой стрелке, если start_angle < end_angle, и против часовой стрелки в противном случае. Прохождение тех же углов, но в обратном порядке, даст ту же дугу. Если абсолютная разница между start_angle и end_angle больше @GDScript.TAU радиан, то рисуется полная окружность (т.е. дуга не будет перекрывать саму себя).


void draw_char(font: Font, pos: Vector2, char: String, font_size: int = 16, modulate: Color = Color(1, 1, 1, 1), oversampling: float = 0.0) const 🔗

Рисует первый символ строки, используя пользовательский шрифт. Если oversampling больше нуля, он используется как коэффициент передискретизации шрифта, в противном случае используются настройки передискретизации области просмотра. pos определяется в локальном пространстве.


void draw_char_outline(font: Font, pos: Vector2, char: String, font_size: int = 16, size: int = -1, modulate: Color = Color(1, 1, 1, 1), oversampling: float = 0.0) const 🔗

Рисует контур первого символа строки, используя заданный шрифт. Если oversampling больше нуля, он используется как коэффициент передискретизации шрифта, в противном случае используются настройки передискретизации области просмотра. pos определяется в локальном пространстве.


void draw_circle(position: Vector2, radius: float, color: Color, filled: bool = true, width: float = -1.0, antialiased: bool = false) 🔗

Рисует круг с position, заданным в локальном пространстве. См. также draw_ellipse(), draw_arc(), draw_polyline() и draw_polygon().

Если filled равен true, круг будет залит указанным color. Если filled равен false, круг будет нарисован как обводка с заданными color и width.

Если width отрицательный, будут нарисованы двухточечные примитивы вместо четырехточечных. Это означает, что при масштабировании CanvasItem линии останутся тонкими. Если такое поведение нежелательно, передайте положительный width, например 1.0.

Если antialiased равен true, к границе будут прикреплены полупрозрачные «перья», делающие контуры плавными.

Примечание: Параметр width эффективен только в том случае, если filled равен false.


void draw_colored_polygon(points: PackedVector2Array, color: Color, uvs: PackedVector2Array = PackedVector2Array(), texture: Texture2D = null) 🔗

Рисует цветной многоугольник с любым количеством точек, выпуклый или вогнутый. Точки в массиве points определены в локальном пространстве. В отличие от draw_polygon(), для всего многоугольника необходимо указать один цвет.

Примечание: Если вы часто перерисовываете один и тот же многоугольник с большим количеством вершин, рассмотрите возможность предварительного вычисления триангуляции с помощью Geometry2D.triangulate_polygon() и использования draw_mesh(), draw_multimesh() или RenderingServer.canvas_item_add_triangle_array().

Примечание: Stylebox'ы, текстуры и сетки, хранящиеся только в локальных переменных, не следует использовать с этим методом в GDScript, поскольку операция рисования не начинается сразу после вызова этого метода. В GDScript, когда функция с локальными переменными завершается, локальные переменные уничтожаются до начала рендеринга.


void draw_dashed_line(from: Vector2, to: Vector2, color: Color, width: float = -1.0, dash: float = 2.0, aligned: bool = true, antialiased: bool = false) 🔗

Рисует пунктирную линию от одной двухмерной точки к другой заданного цвета и ширины. Позиции from и to определяются в локальном пространстве. См. также draw_line(), draw_multiline() и draw_polyline().

Если width отрицательный, то будет отрисован двухточечный примитив вместо четырёхточечного. Это означает, что при масштабировании CanvasItem части линии останутся тонкими. Если такое поведение нежелательно, передайте положительное значение width, например, 1.0.

dash — это длина каждого штриха в пикселях, при этом зазор между штрихами будет такой же длины. Если aligned равен true, длину первого и последнего штрихов можно укоротить или удлинить, чтобы линия начиналась и заканчивалась точно в точках, заданных from и to. Оба конца всегда симметричны, если aligned равно true. Если aligned равно false, все штрихи будут иметь одинаковую длину, но линия может выглядеть неполной на конце из-за того, что длина штриха не делится нацело на длину линии. Если aligned равно false, штрихи отображаются полностью.

Если antialiased равно true, к границе будут добавлены полупрозрачные «перья», что сделает контуры плавными.

Примечание: antialiased эффективен только в том случае, если width больше 0.0.


void draw_ellipse(position: Vector2, major: float, minor: float, color: Color, filled: bool = true, width: float = -1.0, antialiased: bool = false) 🔗

Рисует эллипс с большой полуосью major и малой полуосью minor. См. также draw_circle(), draw_ellipse_arc(), draw_polyline() и draw_polygon().

Если filled равно true, эллипс будет залит указанным color. Если filled равно false, эллипс будет нарисован в виде обводки с указанными color и width значениями.

Если width отрицательное значение, будут нарисованы двухточечные примитивы вместо четырехточечных. Это означает, что при масштабировании CanvasItem линии останутся тонкими. Если такое поведение нежелательно, передайте положительное значение width, например 1.0.

Если antialiased равно true, к границе будут прикреплены полупрозрачные «перья», сглаживающие контуры.

Примечание: width действует только в том случае, если filled равно false.


void draw_ellipse_arc(center: Vector2, major: float, minor: float, start_angle: float, end_angle: float, point_count: int, color: Color, width: float = -1.0, antialiased: bool = false) 🔗

Рисует незаполненную эллиптическую дугу между заданными углами с равномерными значениями color и width и опциональным сглаживанием (поддерживается только для положительных значений width). Чем больше значение point_count, тем плавнее кривая. Для круговых дуг см. draw_arc(). См. также draw_ellipse().

Если width отрицательное, оно будет проигнорировано, и дуга будет нарисована с использованием RenderingServer.PRIMITIVE_LINE_STRIP. Это означает, что при масштабировании CanvasItem дуга останется тонкой. Если такое поведение нежелательно, передайте положительное значение width, например, 1.0.

Дуга рисуется от start_angle к значению end_angle, то есть по часовой стрелке, если start_angle < end_angle, и против часовой стрелки в противном случае. Прохождение тех же углов, но в обратном порядке, даст ту же дугу. Если абсолютная разница между start_angle и end_angle больше @GDScript.TAU радиан, то будет нарисован полный эллипс (т.е. дуга не будет перекрывать саму себя).


void draw_end_animation() 🔗

После отправки всех фрагментов анимации через draw_animation_slice() эта функция может быть использована для возврата рисования в состояние по умолчанию (все последующие команды рисования будут видны). Если вас не интересует этот конкретный вариант использования, использование этой функции после отправки фрагментов не требуется.


void draw_lcd_texture_rect_region(texture: Texture2D, rect: Rect2, src_rect: Rect2, modulate: Color = Color(1, 1, 1, 1)) 🔗

Рисует текстурированную прямоугольную область шрифтовой текстуры с субпиксельным сглаживанием LCD в заданной позиции, опционально модулированную цветом. Параметр rect определяется в локальном пространстве.

Текстура рисуется с использованием следующей операции смешивания, режим смешивания CanvasItemMaterial игнорируется:

dst.r = texture.r * modulate.r * modulate.a + dst.r * (1.0 - texture.r * modulate.a);
dst.g = texture.g * modulate.g * modulate.a + dst.g * (1.0 - texture.g * modulate.a);
dst.b = texture.b * modulate.b * modulate.a + dst.b * (1.0 - texture.b * modulate.a);
dst.a = modulate.a + dst.a * (1.0 - modulate.a);

Примечание: Stylebox'ы, текстуры и сетки, хранящиеся только в локальных переменных, не следует использовать с этим методом в GDScript, поскольку операция отрисовки не начинается сразу после вызова этого метода. В GDScript, когда функция с локальными переменными завершается, локальные переменные уничтожаются до начала рендеринга.


void draw_line(from: Vector2, to: Vector2, color: Color, width: float = -1.0, antialiased: bool = false) 🔗

Рисует линию от одной 2D точки к другой заданного цвета и ширины. При необходимости можно использовать сглаживание. Позиции from и to определяются в локальном пространстве. См. также draw_dashed_line(), draw_multiline() и draw_polyline().

Если width отрицательный, то будет нарисован двухточечный примитив вместо четырёхточечного. Это означает, что при масштабировании CanvasItem линия останется тонкой. Если такое поведение нежелательно, передайте положительное значение width, например, 1.0.


void draw_mesh(mesh: Mesh, texture: Texture2D, transform: Transform2D = Transform2D(1, 0, 0, 1, 0, 0), modulate: Color = Color(1, 1, 1, 1)) 🔗

Рисует Mesh в 2D, используя предоставленную текстуру. См. MeshInstance2D для получения соответствующей документации. transform определяется в локальном пространстве.

Примечание: Stylebox'ы, текстуры и сетки, хранящиеся только в локальных переменных, не следует использовать с этим методом в GDScript, поскольку операция рисования не начинается сразу после вызова этого метода. В GDScript, когда функция с локальными переменными завершается, локальные переменные уничтожаются до начала рендеринга.


void draw_msdf_texture_rect_region(texture: Texture2D, rect: Rect2, src_rect: Rect2, modulate: Color = Color(1, 1, 1, 1), outline: float = 0.0, pixel_range: float = 4.0, scale: float = 1.0) 🔗

Рисует текстурированную прямоугольную область многоканальной текстуры знакового поля расстояний в заданной позиции, опционально модулированную цветом. Параметр rect определяется в локальном пространстве. См. FontFile.multichannel_signed_distance_field для получения дополнительной информации и предостережений относительно рендеринга шрифтов MSDF.

Если outline положительное значение, значение альфа-канала каждого пикселя в области устанавливается равным максимальному значению истинного расстояния в радиусе outline.

Значение pixel_range должно совпадать со значением, использованным при генерации текстуры поля расстояний.

Примечание: Stylebox'ы, текстуры и сетки, хранящиеся только в локальных переменных, не следует использовать с этим методом в GDScript, поскольку операция рисования не начинается сразу после вызова этого метода. В GDScript, когда функция с локальными переменными завершается, локальные переменные уничтожаются до начала рендеринга.


void draw_multiline(points: PackedVector2Array, color: Color, width: float = -1.0, antialiased: bool = false) 🔗

Рисует несколько разрозненных линий с одинаковыми параметрами width и color. Каждая линия определяется двумя последовательными точками из массива points в локальном пространстве, т.е. i-й сегмент состоит из points[2 * i], points[2 * i + 1] конечных точек. При рисовании большого количества линий это быстрее, чем использование отдельных вызовов draw_line(). Для рисования взаимосвязанных линий используйте draw_polyline().

Если width отрицательный, то будут отрисовываться двухточечные примитивы вместо четырёхточечных. Это означает, что при масштабировании CanvasItem линии останутся тонкими. Если такое поведение нежелательно, передайте положительное значение width, например, 1.0.

Примечание: antialiased эффективен только в том случае, если width больше 0.0.


void draw_multiline_colors(points: PackedVector2Array, colors: PackedColorArray, width: float = -1.0, antialiased: bool = false) 🔗

Рисует несколько разрозненных линий с равномерной width и посегментной раскраской. Каждый сегмент определяется двумя последовательными точками из массива points в локальном пространстве и соответствующим цветом из массива colors, т.е. i-й сегмент состоит из points[2 * i], points[2 * i + 1] конечных точек и имеет цвет colors[i]. При рисовании большого количества линий это быстрее, чем использование отдельных вызовов draw_line(). Для рисования взаимосвязанных линий используйте draw_polyline_colors().

Если width отрицательный, то будут отрисовываться двухточечные примитивы вместо четырёхточечных. Это означает, что при масштабировании CanvasItem линии останутся тонкими. Если такое поведение нежелательно, передайте положительное значение width, например, 1.0.

Примечание: antialiased эффективен только в том случае, если width больше, чем 0.0.


void draw_multiline_string(font: Font, pos: Vector2, text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, max_lines: int = -1, modulate: Color = Color(1, 1, 1, 1), brk_flags: BitField[LineBreakFlag] = 3, justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0, oversampling: float = 0.0) const 🔗

Разбивает text на строки и рисует их с указанным font в точке pos в локальном пространстве (в верхнем левом углу). Цвет текста будет умножен на modulate. Если width больше или равен 0, текст будет обрезан, если превысит указанную ширину. Если oversampling больше нуля, он используется как коэффициент передискретизации шрифта, в противном случае используются настройки передискретизации области просмотра.


void draw_multiline_string_outline(font: Font, pos: Vector2, text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, max_lines: int = -1, size: int = 1, modulate: Color = Color(1, 1, 1, 1), brk_flags: BitField[LineBreakFlag] = 3, justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0, oversampling: float = 0.0) const 🔗

Разбивает text на строки и рисует контур текста, используя указанный font в точке pos в локальном пространстве (в левом верхнем углу). Цвет текста будет умножен на modulate. Если width больше или равен 0, текст будет обрезан, если превысит указанную ширину. Если oversampling больше нуля, он используется как коэффициент передискретизации шрифта, в противном случае используются настройки передискретизации области просмотра.


void draw_multimesh(multimesh: MultiMesh, texture: Texture2D) 🔗

Рисует MultiMesh в 2D с использованием предоставленной текстуры. См. MultiMeshInstance2D для получения соответствующей документации.

Примечание: Stylebox'ы, текстуры и сетки, хранящиеся только в локальных переменных, не следует использовать с этим методом в GDScript, поскольку операция рисования не начинается сразу после вызова этого метода. В GDScript, когда функция с локальными переменными завершается, локальные переменные уничтожаются до начала рендеринга.


void draw_polygon(points: PackedVector2Array, colors: PackedColorArray, uvs: PackedVector2Array = PackedVector2Array(), texture: Texture2D = null) 🔗

Рисует сплошной многоугольник с любым количеством точек, выпуклый или вогнутый. В отличие от draw_colored_polygon(), цвет каждой точки можно изменять индивидуально. Массив points определяется в локальном пространстве. См. также draw_polyline() и draw_polyline_colors(). Если вам нужна большая гибкость (например, возможность использования костей), используйте RenderingServer.canvas_item_add_triangle_array() вместо этого.

Примечание: Если вы часто перерисовываете один и тот же многоугольник с большим количеством вершин, рассмотрите возможность предварительного вычисления триангуляции с помощью Geometry2D.triangulate_polygon() и использования draw_mesh(), draw_multimesh() или RenderingServer.canvas_item_add_triangle_array().

Примечание: Stylebox'ы, текстуры и сетки, хранящиеся только в локальных переменных, не следует использовать с этим методом в GDScript, поскольку операция отрисовки не начинается сразу после вызова этого метода. В GDScript, когда функция с локальными переменными завершается, локальные переменные уничтожаются до начала рендеринга.


void draw_polyline(points: PackedVector2Array, color: Color, width: float = -1.0, antialiased: bool = false) 🔗

Рисует соединённые отрезки линий с одинаковыми color и width и опциональным сглаживанием (поддерживается только для положительных значений width). Массив points определён в локальном пространстве. При рисовании большого количества линий это быстрее, чем использование отдельных вызовов draw_line(). Для рисования несвязанных линий используйте draw_multiline(). См. также draw_polygon().

Если width отрицательный, он будет проигнорирован, и ломаная линия будет отрисована с помощью RenderingServer.PRIMITIVE_LINE_STRIP. Это означает, что при масштабировании CanvasItem ломаная линия останется тонкой. Если такое поведение нежелательно, передайте положительное значение width, например, 1.0.


void draw_polyline_colors(points: PackedVector2Array, colors: PackedColorArray, width: float = -1.0, antialiased: bool = false) 🔗

Рисует соединённые отрезки линий с равномерной шириной width, поточечной раскраской и опциональным сглаживанием (поддерживается только для положительных значений width). Цвета, назначенные точкам линии, соответствуют индексам между points и colors, т.е. каждый отрезок линии заполняется градиентом между цветами конечных точек. Массив points определён в локальном пространстве. При рисовании большого количества линий это быстрее, чем использование отдельных вызовов draw_line(). Для рисования несвязанных линий используйте draw_multiline_colors(). См. также draw_polygon().

Если width отрицательный, он будет проигнорирован, и ломаная линия будет отрисована с помощью RenderingServer.PRIMITIVE_LINE_STRIP. Это означает, что при масштабировании CanvasItem ломаная линия останется тонкой. Если такое поведение нежелательно, передайте положительное значение width, например, 1.0.


void draw_primitive(points: PackedVector2Array, colors: PackedColorArray, uvs: PackedVector2Array, texture: Texture2D = null) 🔗

Рисует пользовательский примитив. 1 точка для точки, 2 точки для линии, 3 точки для треугольника и 4 точки для четырехугольника. Если указано 0 точек или более 4 точек, ничего не будет нарисовано, и будет выведено сообщение об ошибке. Массив points определен в локальном пространстве. См. также draw_line(), draw_polyline(), draw_polygon() и draw_rect().

Примечание: Stylebox'ы, текстуры и сетки, хранящиеся только в локальных переменных, не следует использовать с этим методом в GDScript, поскольку операция рисования не начинается сразу после вызова этого метода. В GDScript, когда функция с локальными переменными завершается, локальные переменные уничтожаются до начала рендеринга.


void draw_rect(rect: Rect2, color: Color, filled: bool = true, width: float = -1.0, antialiased: bool = false) 🔗

Рисует прямоугольник. Если filled равен true, прямоугольник будет залит указанным цветом color. Если filled равен false, прямоугольник будет нарисован обводкой с указанными color и width. Параметр rect задаётся в локальном пространстве. См. также draw_texture_rect().

Если width отрицательный, то будут отрисовываться двухточечные примитивы вместо четырёхточечных. Это означает, что при масштабировании CanvasItem линии останутся тонкими. Если такое поведение нежелательно, передайте положительное значение width, например, 1.0.

Если antialiased равен true, к границе будут добавлены полупрозрачные «перья», что сделает контуры плавными.

Примечание: width эффективен только в том случае, если filled имеет значение false.

Примечание: Незаполненные прямоугольники, нарисованные с отрицательным значением width, могут отображаться некорректно. Например, углы могут отсутствовать или быть ярче из-за перекрывающихся линий (для полупрозрачного color).


void draw_set_transform(position: Vector2, rotation: float = 0.0, scale: Vector2 = Vector2(1, 1)) 🔗

Задаёт пользовательское локальное преобразование для отрисовки через компоненты. Всё, что будет отрисовано после этого, будет преобразовано этим преобразованием.

Примечание: FontFile.oversampling не учитывает scale. Это означает, что масштабирование приведёт к размытию или пикселизации растровых (не MSDF) динамических шрифтов. Чтобы текст оставался чётким независимо от масштаба, можно включить рендеринг шрифтов MSDF, включив ProjectSettings.gui/theme/default_font_multichannel_signed_distance_field (применяется только к шрифту проекта по умолчанию) или Multichannel Signed Distance Field в параметрах импорта DynamicFont для пользовательских шрифтов. Для системных шрифтов SystemFont.multichannel_signed_distance_field можно включить в инспекторе.


void draw_set_transform_matrix(xform: Transform2D) 🔗

Задаёт локальное преобразование для рисования через матрицу. Всё, что будет отрисовано после этого, будет преобразовано этим преобразованием.


void draw_string(font: Font, pos: Vector2, text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, modulate: Color = Color(1, 1, 1, 1), justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0, oversampling: float = 0.0) const 🔗

Рисует text с использованием указанного font в pos локального пространства (нижний левый угол, используя базовую линию шрифта). Цвет текста будет умножен на modulate. Если width больше или равен 0, текст будет обрезан, если он превышает указанную ширину. Если oversampling больше нуля, он используется в качестве коэффициента передискретизации шрифта, в противном случае используются настройки передискретизации области просмотра.

Пример: Рисует «Hello world», используя шрифт по умолчанию проекта:

draw_string(ThemeDB.fallback_font, Vector2(64, 64), "Hello world", HORIZONTAL_ALIGNMENT_LEFT, -1, ThemeDB.fallback_font_size)

См. также Font.draw_string().


void draw_string_outline(font: Font, pos: Vector2, text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, size: int = 1, modulate: Color = Color(1, 1, 1, 1), justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0, oversampling: float = 0.0) const 🔗

Рисует контур text с заданным font в точке pos в локальном пространстве (в левом нижнем углу, используя базовую линию шрифта). Цвет текста будет умножен на modulate. Если width больше или равен 0, текст будет обрезан при превышении заданной ширины. Если oversampling больше нуля, он используется как коэффициент передискретизации шрифта, в противном случае используются настройки передискретизации области просмотра.


void draw_style_box(style_box: StyleBox, rect: Rect2) 🔗

Рисует стилизованный прямоугольник. Параметр rect определяется в локальном пространстве.

Примечание: Stylebox'ы, текстуры и сетки, хранящиеся только в локальных переменных, не следует использовать с этим методом в GDScript, поскольку операция рисования не начинается сразу после вызова этого метода. В GDScript, когда функция с локальными переменными завершается, локальные переменные уничтожаются до начала рендеринга.


void draw_texture(texture: Texture2D, position: Vector2, modulate: Color = Color(1, 1, 1, 1)) 🔗

Рисует текстуру в заданной позиции. Параметр position определяется в локальном пространстве.

Примечание: Stylebox'ы, текстуры и сетки, хранящиеся только в локальных переменных, не следует использовать с этим методом в GDScript, поскольку операция отрисовки не начинается сразу после вызова этого метода. В GDScript, когда функция с локальными переменными завершается, локальные переменные уничтожаются до начала рендеринга.


void draw_texture_rect(texture: Texture2D, rect: Rect2, tile: bool, modulate: Color = Color(1, 1, 1, 1), transpose: bool = false) 🔗

Рисует текстурированный прямоугольник в заданной позиции, при необходимости модулированный цветом. Параметр rect определяется в локальном пространстве. Если transpose имеет значение true, координаты X и Y текстуры будут поменяны местами. См. также draw_rect() и draw_texture_rect_region().

Примечание: Stylebox'ы, текстуры и сетки, хранящиеся только в локальных переменных, не следует использовать с этим методом в GDScript, поскольку операция рисования не начинается сразу после вызова этого метода. В GDScript, когда функция с локальными переменными завершается, локальные переменные уничтожаются до начала рендеринга.


void draw_texture_rect_region(texture: Texture2D, rect: Rect2, src_rect: Rect2, modulate: Color = Color(1, 1, 1, 1), transpose: bool = false, clip_uv: bool = true) 🔗

Рисует текстурированный прямоугольник из области текстуры (указанной параметром src_rect) в заданной позиции в локальном пространстве, опционально модулированный цветом. Если transpose имеет значение true, координаты X и Y текстуры будут поменяны местами. См. также draw_texture_rect().

Примечание: Stylebox'ы, текстуры и сетки, хранящиеся только в локальных переменных, не следует использовать с этим методом в GDScript, поскольку операция рисования не начинается сразу после вызова этого метода. В GDScript, когда функция с локальными переменными завершается, локальные переменные уничтожаются до начала рендеринга.


void force_update_transform() 🔗

Заставляет обновить преобразование узла. Не удается, если узел не находится внутри дерева. См. также get_transform().

Примечание: Из соображений производительности изменения преобразования обычно накапливаются и применяются один раз в конце кадра. Обновление также распространяется на дочерние элементы CanvasItem. Поэтому используйте этот метод только тогда, когда вам нужно актуальное преобразование (например, во время физических операций).


RID get_canvas() const 🔗

Возвращает RID холста World2D, на котором зарегистрирован этот узел, используемый в RenderingServer.


RID get_canvas_item() const 🔗

Возвращает внутренний элемент холста RID, используемый в RenderingServer для этого узла.


CanvasLayer get_canvas_layer_node() const 🔗

Возвращает CanvasLayer, содержащий этот узел, или null, если узел не находится ни в одном CanvasLayer.


Transform2D get_canvas_transform() const 🔗

Возвращает преобразование этого узла, преобразованное из зарегистрированной системы координат холста в систему координат его области просмотра. См. также Node.get_viewport().


Vector2 get_global_mouse_position() const 🔗

Возвращает глобальную позицию курсора мыши относительно CanvasLayer, содержащего этот узел.

Примечание: Для координат экранного пространства (например, при использовании невстроенного Popup) можно использовать DisplayServer.mouse_get_position().


Transform2D get_global_transform() const 🔗

Возвращает глобальную матрицу преобразования этого элемента, т. е. объединенное преобразование до самого верхнего узла CanvasItem. Самый верхний элемент — это CanvasItem, у которого либо нет родителя, либо есть родитель, отличный от CanvasItem, либо включен top_level.


Transform2D get_global_transform_with_canvas() const 🔗

Возвращает преобразование из локальной системы координат этого CanvasItem в систему координат Viewport-ов.


Variant get_instance_shader_parameter(name: StringName) const 🔗

Получить значение параметра шейдера, установленное для данного экземпляра.


Vector2 get_local_mouse_position() const 🔗

Возвращает положение мыши в этом CanvasItem, используя локальную систему координат этого CanvasItem.


Transform2D get_screen_transform() const 🔗

Возвращает преобразование этого CanvasItem в глобальных экранных координатах (т. е. с учетом положения окна). В основном полезно для плагинов редактора.

Эквивалентно get_global_transform_with_canvas(), если окно встроено (см. Viewport.gui_embed_subwindows).


Transform2D get_transform() const 🔗

Возвращает матрицу преобразования этого CanvasItem.


Rect2 get_viewport_rect() const 🔗

Возвращает границы области просмотра этого узла как Rect2. См. также Node.get_viewport().


Transform2D get_viewport_transform() const 🔗

Возвращает преобразование этого узла, преобразованное из зарегистрированной системы координат холста в систему координат его вьюпорта-эмбеддера. См. также Viewport.get_final_transform() и Node.get_viewport().


bool get_visibility_layer_bit(layer: int) const 🔗

Возвращает true, если слой с указанным индексом установлен в visible_layer.


World2D get_world_2d() const 🔗

Возвращает World2D, в котором зарегистрирован этот узел.

Обычно это то же самое, что и область просмотра этого узла (см. Node.get_viewport() и Viewport.find_world_2d()).


void hide() 🔗

Скрыть CanvasItem, если он в данный момент виден. Это эквивалентно установке visible на false.


bool is_local_transform_notification_enabled() const 🔗

Возвращает true, если узел получает NOTIFICATION_LOCAL_TRANSFORM_CHANGED всякий раз, когда изменяется его локальное преобразование. Это включается с помощью set_notify_local_transform().


bool is_transform_notification_enabled() const 🔗

Возвращает true, если узел получает NOTIFICATION_TRANSFORM_CHANGED всякий раз, когда изменяется его глобальное преобразование. Это включается с помощью set_notify_transform().


bool is_visible_in_tree() const 🔗

Возвращает true, если узел присутствует в SceneTree, его свойство visible равно true и все его предки также видны. Если какой-либо предок скрыт, этот узел не будет виден в дереве сцены и, следовательно, не будет отрисован (см. _draw()).

Видимость проверяется только в родительских узлах, которые наследуются от CanvasItem, CanvasLayer и Window. Если родительский узел имеет любой другой тип (например, Node, AnimationPlayer или Node3D), он считается видимым.

Примечание: Этот метод не учитывает visible_layer, поэтому даже если этот метод возвращает true, узел может оказаться неотрисованным.


Vector2 make_canvas_position_local(viewport_point: Vector2) const 🔗

Преобразует viewport_point из координат области просмотра в локальные координаты этого узла.

Для противоположной операции используйте get_global_transform_with_canvas().

var viewport_point = get_global_transform_with_canvas() * local_point

InputEvent make_input_local(event: InputEvent) const 🔗

Возвращает копию заданного event с его координатами, преобразованными из глобального пространства в локальное пространство этого CanvasItem. Если это невозможно, возвращает тот же InputEvent без изменений.


void move_to_front() 🔗

Перемещает этот узел ниже его братьев и сестер, обычно заставляя узел рисоваться поверх своих братьев и сестер. Ничего не делает, если у этого узла нет родителя. См. также Node.move_child().


void queue_redraw() 🔗

Ставит в очередь CanvasItem для перерисовки. Во время простоя, если CanvasItem виден, отправляется NOTIFICATION_DRAW и вызывается _draw(). Это происходит только один раз за кадр, даже если этот метод вызывался несколько раз.


void set_instance_shader_parameter(name: StringName, value: Variant) 🔗

Установите значение шейдерной униформы только для этого экземпляра (per-instance uniform). См. также ShaderMaterial.set_shader_parameter(), чтобы назначить униформу для всех экземпляров, использующих один и тот же ShaderMaterial.

Примечание: Чтобы шейдерную униформу можно было назначать для каждого экземпляра, она должна быть определена с помощью instance uniform ..., а не uniform ... в коде шейдера.

Примечание: name чувствительна к регистру и должна точно соответствовать имени униформы в коде (а не заглавному имени в инспекторе).


void set_notify_local_transform(enable: bool) 🔗

Если true, узел будет получать NOTIFICATION_LOCAL_TRANSFORM_CHANGED всякий раз, когда его локальное преобразование изменяется.

Примечание: Многие элементы холста, такие как Bone2D или CollisionShape2D, автоматически включают это для правильной работы.


void set_notify_transform(enable: bool) 🔗

Если true, узел будет получать NOTIFICATION_TRANSFORM_CHANGED всякий раз, когда изменяется его глобальное преобразование.

Примечание: Многие элементы холста, такие как Camera2D или Light2D, автоматически включают эту функцию для корректной работы.


void set_visibility_layer_bit(layer: int, enabled: bool) 🔗

Установить/сбросить отдельные биты на слое видимости рендеринга. Это упрощает редактирование слоя видимости этого CanvasItem.


void show() 🔗

Показывать CanvasItem, если он в данный момент скрыт. Это эквивалентно установке visible на true.

Примечание: Для элементов управления, которые наследуют Popup, правильный способ сделать их видимыми — вызвать одну из нескольких функций popup*().