---
title: "Drawing types & behavior"
description: "Object fields, option tables, and behavior for Drawing."
---


## Common properties

| Property | Type | Default / behavior |
| --- | --- | --- |
| Visible | boolean | false |
| Transparency | number | 1; opacity, 1 is fully visible and 0 invisible |
| Color | Color3 | White |
| ZIndex | number | 0; rendering order |
| Thickness | number | 1 |
| Class / ClassName | string | Read-only class name |
| __OBJECT_EXISTS | boolean | Read-only lifetime flag |
| Remove / Destroy | object:Remove(): () | Same removal operation |

Drawing objects are screen-space userdata. Positions use Vector2 pixels; colors use Color3 components. Unknown property reads return nil and unknown/read-only writes do nothing. Visible must be set true. Renderer/font/image backend readiness affects whether an object appears.

## Properties by class

| Class | Additional properties and defaults |
| --- | --- |
| Line | From: Vector2=(0,0), To: Vector2=(0,0) |
| Text | Text: string="", Size: number=13, Position: Vector2=(0,0), Center: boolean=false, Outline: boolean=false, OutlineColor: Color3=black, Font: number=0, TextBounds: Vector2 (read-only, computed) |
| Circle | Position: Vector2=(0,0), Radius: number=0, NumSides: number=24 (clamped 3..128), Filled: boolean=false |
| Square | Position: Vector2=(0,0), Size: Vector2=(0,0), Filled: boolean=false |
| Triangle | PointA, PointB, PointC: Vector2=(0,0); Filled: boolean=false |
| Quad | PointA, PointB, PointC, PointD: Vector2=(0,0); Filled: boolean=false |
| Image | Position, Size: Vector2=(0,0); Data: binary string=""; Uri/Url: string=""; Rounding: number=0; Rotation: number=0 |

Fonts are Drawing.Fonts.UI=0, System=1, Plex=2, Monospace=3. Text.Font is clamped to 0..3. Image.Data stores encoded image bytes for backend upload; Uri/Url uses the configured fetching backend. Neither is a Roblox ImageLabel.Image property. Image.Rotation is measured in degrees around the image center. A finite nonzero rotation uses a rotated quad; otherwise positive Rounding applies rounded corners in renderer-scaled pixels. Rotation takes precedence over Rounding when both are set.

Use object:Remove() or object:Destroy() to release each owned object. Removed userdata can still pass isrenderobj; __OBJECT_EXISTS becomes false. cleardrawcache clears everyone's drawings.
