DxDrawImage: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
(27 intermediate revisions by 15 users not shown)
Line 2: Line 2:
{{Client function}}  
{{Client function}}  


Draws an image on the screen for a single frame. In order for the image to stay visible continuously, you need to call this function with the same parameters on each frame update (see [[onClientRender]]).
[[Image:MTAsa dxDrawImage.png|thumb|190px|An image drawn on the screen with the dxDrawImage function.]]


Draws an image on the screen for a single frame. In order for the image to stay visible continuously, you need to call this function with the same parameters on each frame update (see [[onClientRender]]).<br/>
Image files should ideally have dimensions that are a power of two, to prevent possible blurring.<br/>
<b>Power of two: 2px, 4px, 8px, 16px, 32px, 64px, 128px, 256px, 512px, 1024px...</b>
{{Tip|Use a texture created with [[dxCreateTexture]] to '''speed up drawing'''.}}
{{Tip|To help prevent edge artifacts when drawing textures, set '''textureEdge''' to '''"clamp"''' when calling [[dxCreateTexture]]}}
==Syntax==
==Syntax==
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
bool dxDrawImage ( float posX, float posY, float width, float height, string filepath [, float rotation = 0, float rotationCenterOffsetX = 0, float rotationCenterOffsetY = 0, int color = white, bool postGUI = false ] )
bool dxDrawImage ( float posX, float posY, float width, float height, mixed image,
                [ float rotation = 0, float rotationCenterOffsetX = 0, float rotationCenterOffsetY = 0,
                  int color = tocolor(255,255,255,255), bool postGUI = false ] )
</syntaxhighlight>
</syntaxhighlight>


Line 12: Line 20:
*'''posX:''' the absolute X coordinate of the top left corner of the image
*'''posX:''' the absolute X coordinate of the top left corner of the image
*'''posY:''' the absolute Y coordinate of the top left corner of the image
*'''posY:''' the absolute Y coordinate of the top left corner of the image
*'''width:''' the absolute width of the image (must be a power of two or image might be blurry)
*'''width:''' the absolute width of the image
*'''height:''' the absolute height of the image (must be a power of two or image might be blurry)
*'''height:''' the absolute height of the image
*'''filepath:''' The [[filepath]] of the image which is going to be drawn.
*'''image:''' Either a [[material]] element or a [[filepath]] of the image which is going to be drawn. (.dds images are also supported). Image files should ideally have dimensions that are a power of two, to prevent possible blurring. Use a texture created with [[dxCreateTexture]] to '''speed up drawing'''.


===Optional Arguments===
===Optional Arguments===
Line 20: Line 28:
*'''rotationCenterOffsetX:''' the absolute X offset from the image center for which to rotate the image from.
*'''rotationCenterOffsetX:''' the absolute X offset from the image center for which to rotate the image from.
*'''rotationCenterOffsetY:''' the absolute Y offset from the image center for which to rotate the image from.
*'''rotationCenterOffsetY:''' the absolute Y offset from the image center for which to rotate the image from.
*'''color:''' the color of the image, a value produced by [[tocolor]] or hexadecimal number in format: 0xAARRGGBB (AA = alpha, RR = red, GG = green, BB = blue).
*'''color:''' Tints the image with a value produced by [[tocolor]] or hexadecimal number in format: 0xAARRGGBB (RR = red, GG = green, BB = blue, AA = alpha).
*'''postgui :''' A bool representing whether the image should be drawn on top of or behind any ingame GUI (rendered by CEGUI).
*'''postGUI:''' A bool representing whether the image should be drawn on top of or behind any ingame GUI (rendered by CEGUI).


===Returns===
===Returns===
Line 27: Line 35:


==Example==  
==Example==  
<section name="Client" class="client" show="true">
Example of a pendulum swinging from the top of the screen, made using dxDrawImage.
Example of a pendulum swinging from the top of the screen, made using dxDrawImage.
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
local rootElement = getRootElement()
local screenWidth,screenHeight = guiGetScreenSize()  -- Get screen resolution.
local screenWidth,screenHeight = guiGetScreenSize()  -- Get screen resolution.


Line 45: Line 51:


function HandleTheRendering ( )
function HandleTheRendering ( )
addEventHandler("onClientRender",rootElement, renderDisplay)  -- Keep everything visible with onClientRender.
addEventHandler("onClientRender", root, renderDisplay)  -- Keep everything visible with onClientRender.
end
end
addEventHandler("onClientResourceStart",rootElement, HandleTheRendering)
addEventHandler("onClientResourceStart",resourceRoot, HandleTheRendering)
</syntaxhighlight>
</syntaxhighlight>
</section>


==See Also==
==See Also==
{{Drawing_functions}}
{{Drawing_functions}}
[[hu:dxDrawImage]]

Revision as of 21:13, 30 June 2019

An image drawn on the screen with the dxDrawImage function.

Draws an image on the screen for a single frame. In order for the image to stay visible continuously, you need to call this function with the same parameters on each frame update (see onClientRender).
Image files should ideally have dimensions that are a power of two, to prevent possible blurring.
Power of two: 2px, 4px, 8px, 16px, 32px, 64px, 128px, 256px, 512px, 1024px...


[[{{{image}}}|link=|]] Tip: Use a texture created with dxCreateTexture to speed up drawing.
[[{{{image}}}|link=|]] Tip: To help prevent edge artifacts when drawing textures, set textureEdge to "clamp" when calling dxCreateTexture

Syntax

bool dxDrawImage ( float posX, float posY, float width, float height, mixed image,
                 [ float rotation = 0, float rotationCenterOffsetX = 0, float rotationCenterOffsetY = 0,
                   int color = tocolor(255,255,255,255), bool postGUI = false ] )

Required Arguments

  • posX: the absolute X coordinate of the top left corner of the image
  • posY: the absolute Y coordinate of the top left corner of the image
  • width: the absolute width of the image
  • height: the absolute height of the image
  • image: Either a material element or a filepath of the image which is going to be drawn. (.dds images are also supported). Image files should ideally have dimensions that are a power of two, to prevent possible blurring. Use a texture created with dxCreateTexture to speed up drawing.

Optional Arguments

  • rotation: the rotation, in degrees for the image.
  • rotationCenterOffsetX: the absolute X offset from the image center for which to rotate the image from.
  • rotationCenterOffsetY: the absolute Y offset from the image center for which to rotate the image from.
  • color: Tints the image with a value produced by tocolor or hexadecimal number in format: 0xAARRGGBB (RR = red, GG = green, BB = blue, AA = alpha).
  • postGUI: A bool representing whether the image should be drawn on top of or behind any ingame GUI (rendered by CEGUI).

Returns

Returns true if successful, false otherwise.

Example

Example of a pendulum swinging from the top of the screen, made using dxDrawImage.

local screenWidth,screenHeight = guiGetScreenSize()  -- Get screen resolution.


function renderDisplay ( )
	local seconds = getTickCount() / 1000
	local angle = math.sin(seconds) * 80
	-- This will draw the graphic file 'arrow.png' at the top middle of the screen
	-- using the size of 100 pixels wide, and 240 pixels high.
	-- The center of rotation is at the top of the image.
	dxDrawImage ( screenWidth/2 - 50, 0, 100, 240, 'arrow.png', angle, 0, -120 )
end


function HandleTheRendering ( )
	addEventHandler("onClientRender", root, renderDisplay)  -- Keep everything visible with onClientRender.
end
addEventHandler("onClientResourceStart",resourceRoot, HandleTheRendering)

See Also