DxGetTextSize

From Multi Theft Auto: Wiki
Revision as of 12:35, 7 February 2021 by Myonlake (talk | contribs) (Fix bad return type)
Jump to navigation Jump to search

This function retrieves the theoretical width and height (in pixels) of a certain piece of text, if it were to be drawn using dxDrawText.

NOTE: This function already takes the client's screen resolution into account.

Syntax

Vector2 dxGetTextSize ( string text [, float width = 0, float scaleX = 1.0, float scaleY = 1.0, mixed font = "default", bool wordBreak = false, bool colorCoded = false ] )

OOP Syntax Help! I don't understand this!

Note: This syntax requires you to ignore the font argument above
Method: font:getSize(...)


Required Arguments

  • text: A string representing the text for which you wish to retrieve with width for.

Optional Arguments

NOTE: When using optional arguments, you might need to supply all arguments before the one you wish to use. For more information on optional arguments, see optional arguments.

  • width: The width of the text. Use with wordBreak = true.
  • scaleX: The scale of the text. Scale can be specified as a Vector2.
  • scaleY: The scale of the text. Scale can be specified as a Vector2.
  • font: Either a custom DX font element or the name of a built-in dx font:
    • "default": Tahoma
    • "default-bold": Tahoma Bold
    • "clear": Verdana
    • "arial": Arial
    • "sans": Microsoft Sans Serif
    • "pricedown": Pricedown (GTA's theme text)
    • "bankgothic": Bank Gothic Medium
    • "diploma": Diploma Regular
    • "beckett": Beckett Regular
    • "unifont": Unifont
  • wordBreak: If set to true, the text will wrap to a new line whenever it reaches the right side of the bounding box. If false, the text will always be completely on one line.
  • colorCoded: Should we exclude color codes from the width? False will include the hex in the length.

Returns

Returns a Vector2 representing the width and height of the text in pixels.

Example

This example draws a text with black background at the bottom right corner of the screen.

local screenWidth, screenHeight = guiGetScreenSize()

local message = "Incredibly huuuuuuuge message"
local messageOffset = 32
local messagePadding = 16
local messageWidth = 256

function renderMessage()
    local textSize = dxGetTextSize(message, messageWidth, 2, "default", true)
    local textWidth, textHeight = textSize.x, textSize.y
    local x = screenWidth - textWidth - messageOffset
    local y = screenHeight - textHeight - messageOffset
    dxDrawRectangle(x - messagePadding, y - messagePadding, textWidth + messagePadding * 2, textHeight + messagePadding * 2, 0x80000000) -- draw background
    dxDrawText(message, x, y, x + textWidth, y + textHeight, 0xFFFFFFFF, 2, "default", "left", "top", false, true)
end
addEventHandler("onClientRender", root, renderMessage)
Example

Requirements

This template will be deleted.

See Also