Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
CanvasItem
Успадковує: Node < Object
Успадковано від: Control, Node2D
Абстрактний базовий клас для всього у 2D-просторі.
Опис
Абстрактний базовий клас для всього у 2D-просторі. Вироби з полотна розкладаються деревом; діти успадковують і розширюють трансформацію свого батька. CanvasItem розширено за допомогою Control для вузлів, пов’язаних із GUI, і за допомогою Node2D для 2D-ігрових об’єктів.
Будь-який CanvasItem може малювати. Для цього queue_redraw() викликається рушієм, потім NOTIFICATION_DRAW буде отримано під час простою для запиту на перемальовування. Завдяки цьому елементи полотна не потрібно перемальовувати на кожному кадрі, що значно покращує продуктивність. Надається декілька функцій для малювання на CanvasItem (див. функції
draw_*). Однак їх можна використовувати лише всередині _draw(), його відповідного Object._notification() або методів, підключених до сигналу draw.Елементи полотна малюються в порядку дерева на своєму шарі плотна. За замовчуванням діти знаходяться поверх своїх батьків, тому корінь CanvasItem буде намальовано за всім. Цю поведінку можна змінити для кожного елемента.
CanvasItem можна приховати, що також приховає його дочірні елементи. Налаштовуючи різні інші властивості CanvasItem, ви також можете модулювати його колір (через modulate або self_modulate), змінювати його Z-індекс, режим змішування тощо.
Зауважте, що такі властивості, як перетворення, модуляція та видимість, поширюються лише до прямих дочірніх вузлів CanvasItem. Якщо між ними є вузол, який не є CanvasItem, наприклад Node або AnimationPlayer, вузли CanvasItem нижче матимуть незалежну позицію та ланцюжок modulate. Дивіться також top_level.
Посібники
Властивості
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Методи
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 |
|
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 |
|
RID |
get_canvas() const |
RID |
get_canvas_item() const |
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 |
get_visibility_layer_bit(layer: int) const |
|
World2D |
get_world_2d() const |
void |
hide() |
is_visible_in_tree() const |
|
Vector2 |
make_canvas_position_local(viewport_point: Vector2) const |
make_input_local(event: InputEvent) const |
|
void |
|
void |
|
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_*.
Викликається, коли цей вузол стає прихованим, тобто він більше не видимий у дереві (див. 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
Фільтр текстури зчитує дані лише з найближчого пікселя. Через це текстура виглядає пікселізованою зблизька та зернистою здалеку (оскільки міп-мапи не прочитуються).
TextureFilter TEXTURE_FILTER_LINEAR = 2
Фільтр текстури виконує згладжування між 4 найближчими пікселями. Завдяки цьому текстура виглядає гладкою зблизька, а здалеку — зернистою (оскільки міп-мапи не зчитуються).
TextureFilter TEXTURE_FILTER_NEAREST_WITH_MIPMAPS = 3
Фільтр текстур зчитує з найближчого пікселя та змішує між двома найближчими картами mipmap (або використовує найближчу карту mipmap, якщо ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter має значення true). Це робить текстуру піксельною зблизька та гладкою на відстані.
Використовуйте це для непіксельних текстур, які можна переглядати в низькому масштабі (наприклад, через масштабування Camera2D або масштабування спрайтів), оскільки міп-мапи важливі для згладжування пікселів, які менші за пікселі на екрані.
TextureFilter TEXTURE_FILTER_LINEAR_WITH_MIPMAPS = 4
Фільтр текстур змішує найближчі 4 пікселі з найближчими 2 картами mipmap (або використовує найближчу карту mipmap, якщо ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter має значення true). Це робить текстуру гладкою зблизька та гладкою на відстані.
Використовуйте це для непіксельних текстур, які можна переглядати в низькому масштабі (наприклад, через масштабування Camera2D або масштабування спрайтів), оскільки міп-мапи важливі для згладжування пікселів, які менші за пікселі на екрані.
TextureFilter TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC = 5
Фільтр текстури зчитує з найближчого пікселя та змішує 2 mipmap (або використовує найближче mipmap, якщо 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 mipmap (або використовує найближче mipmap, якщо 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
The CanvasItem will inherit the repeat mode from its parent.
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 🔗
void set_clip_children_mode(value: ClipChildrenMode)
ClipChildrenMode get_clip_children_mode()
Режим, у якому цей вузол обрізає своїх дочірніх вузлів, діючи як маска.
Примітка: Вузли обрізання не можуть бути вкладеними або розміщеними всередині CanvasGroup. Якщо предок цього вузла обрізає своїх дочірніх вузлів або є CanvasGroup, то режим обрізання цього вузла слід встановити на CLIP_CHILDREN_DISABLED, щоб уникнути неочікуваної поведінки.
Шари візуалізації, у яких цей CanvasItem реагує на вузли Light2D.
Матеріал, застосований до цього CanvasItem.
Color modulate = Color(1, 1, 1, 1) 🔗
Колір, застосований до цього CanvasItem. Ця властивість впливає на дочірні елементи CanvasItem, на відміну від self_modulate, яка впливає лише на сам вузол.
Color self_modulate = Color(1, 1, 1, 1) 🔗
Колір, застосований до цього CanvasItem. Ця властивість не впливає на дочірні CanvasItem, на відміну від modulate, який впливає як на сам вузол, так і на його дочірні елементи.
Примітка: Внутрішні дочірні елементи також не залежать від цієї властивості (див. параметр include_internal у Node.add_child()). Для вбудованих вузлів це включає повзунки в ColorPicker та панель вкладок у TabContainer.
bool show_behind_parent = false 🔗
Якщо true, цей вузол малюється позаду свого батьківського вузла.
TextureFilter texture_filter = 0 🔗
void set_texture_filter(value: TextureFilter)
TextureFilter get_texture_filter()
Режим фільтрації, що використовується для рендерингу текстури(текстур) цього CanvasItem.
TextureRepeat texture_repeat = 0 🔗
void set_texture_repeat(value: TextureRepeat)
TextureRepeat get_texture_repeat()
Режим повторення, який використовується для рендерингу текстури(текстур) цього CanvasItem. Він впливає на те, що відбувається, коли текстура семплується поза її межами, наприклад, шляхом встановлення Sprite2D.region_rect, більшого за текстуру, або призначення точок UV Polygon2D поза текстурою.
Примітка: TextureRect не залежить від texture_repeat, оскільки він використовує власну реалізацію повторення текстури.
Якщо true, цей CanvasItem не успадковуватиме своє перетворення від батьківського CanvasItem. Його порядок відображення також буде змінено, щоб він відображався поверх інших CanvasItem, у яких для top_level не встановлено значення true. CanvasItem фактично діятиме так, ніби він був розміщений як дочірній елемент голого Node.
bool use_parent_material = false 🔗
Якщо значення true, матеріал material батьківського елемента CanvasItem використовується як матеріал цього вузла.
Рендерний шар, у якому цей CanvasItem рендерирується вузлами Viewport. Viewport відображатиме CanvasItem, якщо він і всі його батьки мають спільний шар із маскою canvas cull від Viewport.
Примітка: A CanvasItem не успадковує рівні видимості своїх батьків. Це означає, що якщо батько CanvasItem не має всіх тих самих шарів, що й його дитина, дитина може бути невидимою, навіть якщо і батьки, і дитина мають visible встановлено на true. Наприклад, якщо у батька є шар 1, а у дитини шар 2, дитина не буде видно в Viewport з маскою canvas cull, налаштованою на рівень 1 або 2 (див. Viewport.canvas_cull_mask). Щоб переконатися, що батьки та дитина видимі, батько повинен мати обидва шари 1 і 2, або дитина повинна встановити top_level на true.
Якщо true, цей CanvasItem можна намалювати. Чи буде цей CanvasItem насправді намальований, залежить від видимості всіх його предків CanvasItem. Іншими словами: цей CanvasItem буде намальовано, коли is_visible_in_tree() повертає true і всі предки CanvasItem мають спільний принаймні один visibility_layer з цим CanvasItem.
Примітка: Для елементів керування, які успадковують Popup, правильний спосіб зробити їх видимими — це викликати одну з кількох функцій popup*().
Якщо true, цей і дочірній вузли CanvasItem з вищою позицією Y відображаються перед вузлами з нижчою позицією Y. Якщо false, цей і дочірній вузли CanvasItem відображаються зазвичай у порядку дерева сцен.
Якщо Y-сортування ввімкнено на батьківському вузлі ('A'), але вимкнено на дочірньому вузлі ('B'), дочірній вузол ('B') сортується, але його дочірні вузли ('C1', 'C2' тощо) відображаються разом у тій же позиції Y, що й дочірній вузол ('B'). Це дозволяє організовувати порядок візуалізації сцени без зміни дерева сцени.
Вузли сортуються відносно один одного, лише якщо вони знаходяться на одному
члені z_index.
Якщо true, кінцевий Z-індекс цього вузла залежить від Z-індексу його батьківського вузла.
Наприклад, якщо z_index дорівнює 2, а кінцевий Z-індекс його батьківського вузла дорівнює 3, тоді кінцевий Z-індекс цього вузла буде 5 (2 + 3).
Порядок, у якому цей вузол малюється. Вузол з вищим 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(), для всього полігону необхідно вказати один колір.
Note: Якщо ви часто перемальовуєте один і той самий полігон з великою кількістю вершин, подумайте про попереднє обчислення тріангуляції за допомогою Geometry2D.triangulate_polygon() та використовуючи draw_mesh(), draw_multimesh() або RenderingServer.canvas_item_add_triangle_array().
Примітка: Стайлбокси, текстури та сітки, що зберігаються лише всередині локальних змінних, не повинні використовуватися з цим методом у 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) 🔗
Малює пунктирну лінію від однієї 2D точки до іншої, заданого кольору та ширини. Позиції 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);
Примітка: Стайлбокси, текстури та сітки, що зберігаються лише всередині локальних змінних, не повинні використовуватися з цим методом у 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 визначається в локальному просторі.
Примітка: Стайлбокси, текстури та сітки, що зберігаються лише всередині локальних змінних, не повинні використовуватися з цим методом у 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) 🔗
Draws a textured rectangle region of the multichannel signed distance field texture at a given position, optionally modulated by a color. The rect is defined in local space. See FontFile.multichannel_signed_distance_field for more information and caveats about MSDF font rendering.
Якщо outline позитивний, кожне значення альфа-каналу пікселя в області встановлюється на максимальне значення справжньої відстані в радіусі outline.
Значення pixel_range має бути таким самим, яке використовувалося під час генерації текстури поля відстані.
Примітка: Стайлбокси, текстури та сітки, що зберігаються лише всередині локальних змінних, не повинні використовуватися з цим методом у 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 для відповідної документації.
Примітка: Стайлбокси, текстури та сітки, що зберігаються лише всередині локальних змінних, не повинні використовуватися з цим методом у 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().
Примітка: Стайлбокси, текстури та сітки, що зберігаються лише всередині локальних змінних, не повинні використовуватися з цим методом у 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(),
Примітка: Стайлбокси, текстури та сітки, що зберігаються лише всередині локальних змінних, не повинні використовуватися з цим методом у 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)
DrawString(ThemeDB.FallbackFont, new Vector2(64, 64), "Hello world", HorizontalAlignment.Left, -1, ThemeDB.FallbackFontSize);
Див. також 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 визначається в локальному просторі.
Примітка: Стайлбокси, текстури та сітки, що зберігаються лише всередині локальних змінних, не повинні використовуватися з цим методом у GDScript, оскільки операція малювання не починається одразу після виклику цього методу. У GDScript, коли функція з локальними змінними закінчується, локальні змінні знищуються до того, як відбудеться рендеринг.
void draw_texture(texture: Texture2D, position: Vector2, modulate: Color = Color(1, 1, 1, 1)) 🔗
Малює текстуру в певному положенні. Положення параметра визначено в локальному просторі.
Примітка: Стайлбокси, текстури та сітки, що зберігаються лише всередині локальних змінних, не повинні використовуватися з цим методом у 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().
Примітка: Стайлбокси, текстури та сітки, що зберігаються лише всередині локальних змінних, не повинні використовуватися з цим методом у 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().
Примітка: Стайлбокси, текстури та сітки, що зберігаються лише всередині локальних змінних, не повинні використовуватися з цим методом у 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, якщо шар за заданим індексом встановлено в visibility_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), він вважається видимим.
Примітка: цей метод не враховує visibility_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*().