Difference between revisions of "love.graphics.line"

(Draw a zigzag line from a single table)
(Examples: Cleaned up examples.)
Line 23: Line 23:
 
Nothing.
 
Nothing.
 
== Examples ==
 
== Examples ==
 +
 
=== Draw the outline of a simple trapezoid ===
 
=== Draw the outline of a simple trapezoid ===
 
<source lang="lua">
 
<source lang="lua">
 
function love.draw()
 
function love.draw()
  love.graphics.line(200,50, 400,50, 500,300, 100,300, 200,50)  -- last pair is a repeat to complete the trapezoid
+
love.graphics.line(200,50, 400,50, 500,300, 100,300, 200,50)  -- last pair is a repeat to complete the trapezoid
 
end
 
end
 
</source>
 
</source>
 +
 
=== Draw a line from the center of the screen to the mouse pointer ===
 
=== Draw a line from the center of the screen to the mouse pointer ===
 
<source lang="lua">
 
<source lang="lua">
w = love.graphics.getWidth() / 2  -- half the window width
 
h = love.graphics.getHeight() / 2  -- half the window height
 
 
function love.draw()
 
function love.draw()
  local mx, my = love.mouse.getPosition() -- current position of the mouse
+
local mx, my = love.mouse.getPosition()
  love.graphics.line(w, h, mx, my)
+
 
 +
local windowWidth, windowHeight = love.graphics.getDimensions()
 +
 
 +
love.graphics.line(windowWidth/2, windowHeight/2, mx, my)
 
end
 
end
 
</source>
 
</source>
  
=== Draw horizontal and vertical lines to the mouse pointer ===
+
=== Draw a zigzag line using a table ===
 
<source lang="lua">
 
<source lang="lua">
w = love.graphics.getWidth() -- window width
+
local zigzagLine = {100,100, 200,200, 300,100, 400,200}
h = love.graphics.getHeight() -- window height
+
 
 
function love.draw()
 
function love.draw()
local mx, my = love.mouse.getPosition() -- current position of the mouse
+
love.graphics.line(zigzagLine)
love.graphics.line(0, my, w, my) -- horizontal line
 
love.graphics.line(mx, 0, mx, h) -- vertical line
 
 
end
 
end
 
</source>
 
</source>
  
=== Draw a zigzag line from a single table ===
+
=== Generate and draw a grid ===
 
<source lang="lua">
 
<source lang="lua">
sometable = {
+
local cellSize  = 30 -- Width and height of cells.
  100, 100,
+
local gridLines = {}
  200, 200,
 
  300, 100,
 
  400, 200,
 
}
 
function love.draw()
 
  love.graphics.line(sometable)
 
end
 
</source>
 
  
 +
local windowWidth, windowHeight = love.graphics.getDimensions()
  
=== Draw grid ===
+
-- Vertical lines.
<source lang="lua">
+
for x = cellSize, windowWidth, cellSize do
w = love.graphics.getWidth() -- window width
+
local line = {x, 0, x, windowHeight}
h = love.graphics.getHeight() -- window height
+
table.insert(gridLines, line)
grid = {}
 
distance = 30 -- distance between lines
 
for x = distance, w, distance do
 
local line = {x, 0, x, h} -- vertical line
 
table.insert (grid, line)
 
 
end
 
end
for y = distance, h, distance do
+
-- Horizontal lines.
local line = {0, y, w, y} -- horizontal line
+
for y = cellSize, windowHeight, cellSize do
table.insert (grid, line)
+
local line = {0, y, windowWidth, y}
 +
table.insert(gridLines, line)
 
end
 
end
  
function draw_lines (lines)
+
function love.draw()
for i, line in pairs (lines) do
+
love.graphics.setLineWidth(2)
 +
 
 +
for i, line in ipairs(gridLines) do
 
love.graphics.line(line)
 
love.graphics.line(line)
 
end
 
end
end
 
 
function love.draw()
 
draw_lines (grid)
 
 
end
 
end
 
</source>
 
</source>

Revision as of 03:10, 16 July 2021

Draws lines between points.

Function

Synopsis

love.graphics.line( x1, y1, x2, y2, ... )

Arguments

number x1
The position of first point on the x-axis.
number y1
The position of first point on the y-axis.
number x2
The position of second point on the x-axis.
number y2
The position of second point on the y-axis.
number ...
You can continue passing point positions to draw a polyline.

Returns

Nothing.

Function

Synopsis

love.graphics.line( points )

Arguments

table points
A table of point positions, as described above.

Returns

Nothing.

Examples

Draw the outline of a simple trapezoid

function love.draw()
	love.graphics.line(200,50, 400,50, 500,300, 100,300, 200,50)   -- last pair is a repeat to complete the trapezoid
end

Draw a line from the center of the screen to the mouse pointer

function love.draw()
	local mx, my = love.mouse.getPosition()

	local windowWidth, windowHeight = love.graphics.getDimensions()

	love.graphics.line(windowWidth/2, windowHeight/2, mx, my)
end

Draw a zigzag line using a table

local zigzagLine = {100,100, 200,200, 300,100, 400,200}

function love.draw()
	love.graphics.line(zigzagLine)
end

Generate and draw a grid

local cellSize  = 30 -- Width and height of cells.
local gridLines = {}

local windowWidth, windowHeight = love.graphics.getDimensions()

-- Vertical lines.
for x = cellSize, windowWidth, cellSize do
	local line = {x, 0, x, windowHeight}
	table.insert(gridLines, line)
end
-- Horizontal lines.
for y = cellSize, windowHeight, cellSize do
	local line = {0, y, windowWidth, y}
	table.insert(gridLines, line)
end

function love.draw()
	love.graphics.setLineWidth(2)

	for i, line in ipairs(gridLines) do
		love.graphics.line(line)
	end
end

See Also


Other Languages