Reference API Roblox

Engine API

Website

Related

Reference API Roblox

UICorner

A UIComponent that will apply deformation to shapes of corners of its parent GuiObject.

Member index 1

HistoryMember
553CornerRadius: UDim
inherited from Instance
553Archivable: bool
635Capabilities: SecurityCapabilities
553ClassName: string
553Name: string
553Parent: Instance
635Sandboxed: bool
616UniqueId: UniqueId
553className: string
576AddTag(tag: string): null
573ClearAllChildren(): null
462Clone(): Instance
573Destroy(): null
486FindFirstAncestor(name: string): Instance
486FindFirstAncestorOfClass(className: string): Instance
486FindFirstAncestorWhichIsA(className: string): Instance
486FindFirstChild(name: string, recursive: bool = false): Instance
486FindFirstChildOfClass(className: string): Instance
486FindFirstChildWhichIsA(className: string, recursive: bool = false): Instance
486FindFirstDescendant(name: string): Instance
563GetActor(): Actor
486GetAttribute(attribute: string): Variant
462GetAttributeChangedSignal(attribute: string): RBXScriptSignal
631GetAttributes(): Dictionary
486GetChildren(): Objects
462GetDebugId(scopeLength: int = 4): string
486GetDescendants(): Array
486GetFullName(): string
462GetPropertyChangedSignal(property: string): RBXScriptSignal
641GetStyled(name: string): Variant
576GetTags(): Array
576HasTag(tag: string): bool
486IsA(className: string): bool
486IsAncestorOf(descendant: Instance): bool
486IsDescendantOf(ancestor: Instance): bool
580IsPropertyModified(name: string): bool
573Remove(): null
576RemoveTag(tag: string): null
580ResetPropertyToDefault(name: string): null
573SetAttribute(attribute: string, value: Variant): null
462WaitForChild(childName: string, timeOut: double): Instance
553children(): Objects
553clone(): Instance
573destroy(): null
553findFirstChild(name: string, recursive: bool = false): Instance
553getChildren(): Objects
462isA(className: string): bool
553isDescendantOf(ancestor: Instance): bool
573remove(): null
462AncestryChanged(child: Instance, parent: Instance)
462AttributeChanged(attribute: string)
462Changed(property: string)
462ChildAdded(child: Instance)
462ChildRemoved(child: Instance)
462DescendantAdded(descendant: Instance)
462DescendantRemoving(descendant: Instance)
500Destroying()
553childAdded(child: Instance)

Description

A UIComponent that will apply deformation to shapes of corners of its parent GuiObject. Input, but not descendants, will be clipped to the round corner area.

ImageLabel with rounded corners | Image Credit: 0Techy

Using the component

To use the UICorner UIComponent:

  1. Create a Frame / ImageLabel / ImageButton / TextLabel / TextButton / ViewportFrame
  2. Insert a UICorner component as its child
  3. Adjust the round corner radius by changing the CornerRadius property

Note: UICorner cannot be applied to a ScrollingFrame.

UICorner vs 9-slices

Alternatively, rounded backgrounds can be accomplished using 9-slices. As a result, it is helpful to understand the pros and cons of UICorner and 9-slices:

UICorner

  • Pros
  • Can be used to round ViewportFrames and image assets
  • Allows for a scriptable and dynamic corner radius
  • Cons
  • There is a performance overhead (Screen Space specifically) as it needs extra processing on each pixel, while 9-slice only involves simple sampling

9-slices

  • Pros
  • Suitable for highly decorative borders that are not just rounded
  • If you have a lot of rounded rectangles with solid colors and you pay special attention to low-end devices, using 9-slice may be more performance efficient
  • Cons
  • Hard to apply to existing image assets
  • Different corner sizes require different assets

How the corner radius is calculated internally

In order to keep the circular shape of round corners with the UDim CornerRadius value, the round corner radius internally will be calculated as follows:

radius = min(min(rectWidth, rectHeight) / 2, CornerRadius.scale * min(rectWidth, rectHeight) + CornerRadius.offset)

This means that:

  1. The radius of the x-axis is always the same as the radius of y axis.
  2. The scale will always apply to the minimum edge.
  3. Rounded rectangles will always be in a pill shape if CornerRadius is set to a value that leads to a calculated result greater than half of the rectangles' minimum edge.

It is suggested to always use either scale or offset to define CornerRadius instead of mixing them up.

History 5

Members 1

CornerRadius

TypeDefault
UDim0, 8

A UDim property that determines the radius, in pixels, of the UICorner UIComponent, according to the following formula:

radius = min(min(rectWidth, rectHeight) / 2, CornerRadius.scale * min(rectWidth, rectHeight) + CornerRadius.offset)

This means that:

  1. The radius of the x-axis is always the same as the radius of y axis.
  2. The scale will always apply to the minimum edge.
  3. Rounded rectangles will always be in a pill shape if CornerRadius is set to a value that leads to a calculated result greater than half of the rectangles' minimum edge.

It is suggested to always use either scale or offset to define CornerRadius instead of mixing them up.

History 4

Settings