Difference between revisions of "love.graphics.translate"

m (Add l.g.shear and l.g.origin to See Also)
(Examples)
Line 27: Line 27:
 
   love.graphics.translate(10, 10)
 
   love.graphics.translate(10, 10)
 
   love.graphics.print("Text", 5, 5)  -- will effectively render at 15x15
 
   love.graphics.print("Text", 5, 5)  -- will effectively render at 15x15
 +
end
 +
</source>
 +
 +
 +
Move the coordinate system with the mouse:
 +
<source lang="lua">
 +
tx=0
 +
ty=0
 +
function love.draw()
 +
mx = love.mouse.getX()
 +
my = love.mouse.getY()
 +
if love.mouse.isDown(1) then
 +
if not mouse_pressed then
 +
mouse_pressed = true
 +
dx = tx-mx
 +
dy = ty-my
 +
else
 +
tx = mx+dx
 +
ty = my+dy
 +
end
 +
elseif mouse_pressed then
 +
mouse_pressed = false
 +
end
 +
love.graphics.translate(tx, ty)
 +
 +
-- example graphics:
 +
love.graphics.circle( "line", 0, 0, 400 )
 +
love.graphics.line(-440, 0, 440, 0)
 +
love.graphics.line(0, -440, 0, 440)
 
end
 
end
 
</source>
 
</source>

Revision as of 22:05, 4 November 2020

Translates the coordinate system in two dimensions.

When this function is called with two numbers, dx, and dy, all the following drawing operations take effect as if their x and y coordinates were x+dx and y+dy.

Scale and translate are not commutative operations, therefore, calling them in different orders will change the outcome.

This change lasts until love.draw() exits or else a love.graphics.pop reverts to a previous love.graphics.push.

Translating using whole numbers will prevent tearing/blurring of images and fonts draw after translating.

Function

Synopsis

love.graphics.translate( dx, dy )

Arguments

number dx
The translation relative to the x-axis.
number dy
The translation relative to the y-axis.

Returns

Nothing.

Examples

Translate down and to the right by 10 pixels. Remember, the translation is reset at the end of each love.draw.

function love.draw()
   love.graphics.translate(10, 10)
   love.graphics.print("Text", 5, 5)   -- will effectively render at 15x15
end


Move the coordinate system with the mouse:

tx=0
ty=0
function love.draw()
	mx = love.mouse.getX()
	my = love.mouse.getY()
	if love.mouse.isDown(1) then
		if not mouse_pressed then
			mouse_pressed = true
			dx = tx-mx
			dy = ty-my
		else
			tx = mx+dx
			ty = my+dy
		end
	elseif mouse_pressed then
		mouse_pressed = false
	end
	love.graphics.translate(tx, ty)
	
	-- example graphics:
	love.graphics.circle( "line", 0, 0, 400 )
	love.graphics.line(-440, 0, 440, 0)
	love.graphics.line(0, -440, 0, 440)
end

See Also


Other Languages