AudioAsset
Ease
FastString
FontAsset
NineSlice
PackedSprite
PackedSpriteID
RB
   HardwareSettings
   IRetroBlitGame
RBAsset
Rect2i
ShaderAsset
SoundReference
SpriteGrid
SpriteSheetAsset
TMXMapAsset
   TMXLayer
   TMXLayerLoadState
   TMXObject
   TMXObjectGroup
   TMXProperties
Vector2i

RB.DrawNineSlice

Method  -  Static

public static void DrawNineSlice(Rect2i destRect, Rect2i srcTopLeftCornerRect, Rect2i srcTopSideRect, Rect2i srcMiddleRect)
public static void DrawNineSlice(Rect2i destRect, Rect2i srcTopLeftCornerRect, Rect2i srcTopSideRect, Rect2i srcTopRightCornerRect, Rect2i srcLeftSideRect, Rect2i srcMiddleRect, Rect2i srcRightSideRect, Rect2i srcBottomLeftCornerRect, Rect2i srcBottomSideRect, Rect2i srcBottomRightCornerRect)
public static void DrawNineSlice(Rect2i destRect, PackedSpriteID srcTopLeftCornerID, PackedSpriteID srcTopSideID, PackedSpriteID srcMiddleID)
public static void DrawNineSlice(Rect2i destRect, PackedSpriteID srcTopLeftCornerID, PackedSpriteID srcTopSideID, PackedSpriteID srcTopRightCornerID, PackedSpriteID srcLeftSideID, PackedSpriteID srcMiddleID, PackedSpriteID srcRightSideID, PackedSpriteID srcBottomLeftCornerID, PackedSpriteID srcBottomSideID, PackedSpriteID srcBottomRightCornerID)
public static void DrawNineSlice(Rect2i destRect, PackedSprite srcTopLeftCorner, PackedSprite srcTopSide, PackedSprite srcMiddle)
public static void DrawNineSlice(Rect2i destRect, PackedSprite srcTopLeftCorner, PackedSprite srcTopSide, PackedSprite srcTopRightCorner, PackedSprite srcLeftSide, PackedSprite srcMiddle, PackedSprite srcRightSide, PackedSprite srcBottomLeftCorner, PackedSprite srcBottomSide, PackedSprite srcBottomRightCorner)
public static void DrawNineSlice(Rect2i destRect, string srcTopLeftCornerName, string srcTopSideName, string srcMiddleName)
public static void DrawNineSlice(Rect2i destRect, string srcTopLeftCornerName, string srcTopSideName, string srcTopRightCornerName, string srcLeftSideName, string srcMiddleName, string srcRightSideName, string srcBottomLeftCornerName, string srcBottomSideName, string srcBottomRightCornerName)
public static void DrawNineSlice(Rect2i destRect, FastString srcTopLeftCornerName, FastString srcTopSideName, FastString srcMiddleName)
public static void DrawNineSlice(Rect2i destRect, FastString srcTopLeftCornerName, FastString srcTopSideName, FastString srcTopRightCornerName, FastString srcLeftSideName, FastString srcMiddleName, FastString srcRightSideName, FastString srcBottomLeftCornerName, FastString srcBottomSideName, FastString srcBottomRightCornerName)
public static void DrawNineSlice(Rect2i destRect, NineSlice nineSlice)

Parameters

destRect Rect2i Destination rectangle
srcTopLeftCornerRect Rect2i Source rectangle of the top left corner
srcTopSideRect Rect2i Source rectangle of the top side
srcMiddleRect Rect2i Source rectangle of the middle
srcTopRightCornerRect Rect2i Source rectangle of the top right corner
srcLeftSideRect Rect2i Source rectangle of the left side
srcRightSideRect Rect2i Source rectangle of the right side
srcBottomLeftCornerRect Rect2i Source rectangle of the bottom left corner
srcBottomSideRect Rect2i Source rectangle of the bottom side
srcBottomRightCornerRect Rect2i Source rectangle of the bottom right corner
srcTopLeftCornerID PackedSpriteID Source sprite ID of the top left corner
srcTopSideID PackedSpriteID Source sprite ID of the top side
srcMiddleID PackedSpriteID Source sprite ID of the middle
srcTopRightCornerID PackedSpriteID Source sprite ID of the top right corner
srcLeftSideID PackedSpriteID Source sprite ID of the left side
srcRightSideID PackedSpriteID Source sprite ID of the right side
srcBottomLeftCornerID PackedSpriteID Source sprite ID of the bottom left corner
srcBottomSideID PackedSpriteID Source sprite ID of the bottom side
srcBottomRightCornerID PackedSpriteID Source sprite ID of the bottom right corner
srcTopLeftCorner PackedSprite Source sprite of the top left corner
srcTopSide PackedSprite Source sprite of the top side
srcMiddle PackedSprite Source sprite of the middle
srcTopRightCorner PackedSprite sprite rectangle of the top right corner
srcLeftSide PackedSprite Source sprite of the left side
srcRightSide PackedSprite Source sprite of the right side
srcBottomLeftCorner PackedSprite Source sprite of the bottom left corner
srcBottomSide PackedSprite Source sprite of the bottom side
srcBottomRightCorner PackedSprite Source sprite of the bottom right corner
srcTopLeftCornerName string Source sprite name of the top left corner
srcTopSideName string Source sprite name of the top side
srcMiddleName string Source sprite name of the middle
srcTopRightCornerName string Source sprite name of the top right corner
srcLeftSideName string Source sprite name of the left side
srcRightSideName string Source sprite name of the right side
srcBottomLeftCornerName string Source sprite name of the bottom left corner
srcBottomSideName string Source sprite name of the bottom side
srcBottomRightCornerName string Source sprite name of the bottom right corner
nineSlice NineSlice NineSlice defining the parts of the nine-slice image

Returns

Nothing.

Description

Draw a nine-slice sprite. A nine-slice sprite is a special kind of sprite usually used to draw rectangular shapes for UI elements. A nine-slice sprite is defined by up to 9 separate sprites that are arranged and repeated as needed in such a way that they can fill any rectangular area.


Nine parts that make up a nine slice image

The pieces A, C, G, and I are always drawn in the corners of the nine-slice sprite. B and H are repeated horizontally. E and F are repeated vertically. Finally, X is repeated in both directions to fill the middle of the nine-slice sprite.

For best results each of these groups of pieces should be the same height:

  • A, B, C
  • E, F
  • G, H, I
These groups should be the same width:
  • A, E, G
  • B, H
  • C, F, I
The center piece X can be of any size.

The pieces that make up a nine-slice image should not be too small to limit the amount of times they have to be repeated to fill your nine-slice sprite.

In some cases, such as in the image above, many of the pieces are symmetric, for convenience there are RB.DrawNineSlice overloads that take only srcTopLeftCornerRect, srcTopSideRect, and srcMiddleRect and simply rotate and mirror the remaining pieces automatically.

There are a number of different ways to specify the pieces of a nine-slice image. You can use source rectangles in a sprite sheet, or packed sprites. You may also use NineSlice structure to predefine a nine-slice in a convenient format, and then reuse it to draw the nine-slice image with RB.DrawNineSlice.

Example

SpriteSheetAsset  uiSprites = new SpriteSheetAsset();
NineSlice dialogFrame;

void Initialize() {
    uiSprites.Load("spritesheets/ui");
    dialogFrame = new NineSlice(
        new Rect2i(0088),
        new Rect2i(8088),
        new Rect2i(16088));
}

void Render() {
    RB.SpriteSheetSet(uiSprites);

    var dialogRect = new Rect2i(10010012864);

    // Draw a dialog frame using the predefined NineSlice
    RB.DrawNineSlice(dialogRect, dialogFrame);
    RB.Print(
        dialogRect, Color.white, RB.ALIGN_H_CENTER | RB.ALIGN_V_CENTER,
        "It's boring to go alone, take me!");
}

See Also

RB.DrawSprite
RB.DrawNineSlice
RB.SpriteSheetSet
SpriteSheetAsset

See Docs

Features - Nine-Slice Sprite
Features - Sprite Sheets
Features - Sprite Packs