Difference between revisions of "love.graphics.setColor"

(Add colorFromBytes to See Also; add example of converting from RGB bytes)
m (Examples: Nicer color blending in Venn diagram.)
Line 31: Line 31:
 
love.graphics.setColor(love.math.colorFromBytes(128, 234, 255))
 
love.graphics.setColor(love.math.colorFromBytes(128, 234, 255))
 
</source>
 
</source>
 +
 
=== Draw a red, blue and green circle ===
 
=== Draw a red, blue and green circle ===
 
<source lang="lua">
 
<source lang="lua">
 
function love.draw()
 
function love.draw()
 
love.graphics.setColor(1, 0, 0)
 
love.graphics.setColor(1, 0, 0)
love.graphics.circle("fill", 50, 50, 20)
+
love.graphics.circle("fill", 50,50, 20)
  
 
love.graphics.setColor(0, 0, 1)
 
love.graphics.setColor(0, 0, 1)
love.graphics.circle("fill", 50, 100, 20)
+
love.graphics.circle("fill", 50,100, 20)
  
myColor = {0, 1, 0, 1}
+
local myColor = {0, 1, 0, 1}
 
love.graphics.setColor(myColor)
 
love.graphics.setColor(myColor)
love.graphics.circle("fill", 50, 150, 20)
+
love.graphics.circle("fill", 50,150, 20)
 
end
 
end
 
</source>
 
</source>
 +
 
=== Display a Venn diagram ===
 
=== Display a Venn diagram ===
 
<source lang="lua">
 
<source lang="lua">
 
function love.load()
 
function love.load()
baseX = 300
 
baseY = 400
 
radius = 100
 
offsetY = radius*.5*math.sqrt(3)
 
 
love.graphics.setBackgroundColor(1, 1, 1)
 
love.graphics.setBackgroundColor(1, 1, 1)
 
end
 
end
  
 
function love.draw()
 
function love.draw()
love.graphics.setColor(1, 0, 0, 0.4)
+
local baseX  = love.graphics.getWidth()/2
love.graphics.circle('fill', baseX, baseY, radius)
+
local baseY  = 400
love.graphics.setColor(0, 1, 0, 0.4)
+
local radius  = 100
love.graphics.circle('fill', baseX + radius / 2, baseY - offsetY, radius)
+
local offsetY = radius/2 * math.sqrt(3)
love.graphics.setColor(0, 0, 1, 0.4)
+
 
love.graphics.circle('fill', baseX + radius, baseY, radius)
+
love.graphics.setBlendMode("multiply", "premultiplied")
 +
love.graphics.setColor(1, .6, .6)
 +
love.graphics.circle("fill", baseX-radius/2, baseY, radius)
 +
love.graphics.setColor(.6, 1, .6)
 +
love.graphics.circle("fill", baseX, baseY-offsetY, radius)
 +
love.graphics.setColor(.6, .6, 1)
 +
love.graphics.circle("fill", baseX+radius/2, baseY, radius)
 
end
 
end
 
</source>
 
</source>

Revision as of 01:26, 1 September 2022

Sets the color used for drawing.

In versions prior to 11.0, color component values were within the range of 0 to 255 instead of 0 to 1.

Function

Synopsis

love.graphics.setColor( red, green, blue, alpha )

Arguments

number red
The amount of red.
number green
The amount of green.
number blue
The amount of blue.
number alpha (1)
The amount of alpha. The alpha value will be applied to all subsequent draw operations, even the drawing of an image.

Returns

Nothing.

Function

Available since LÖVE 0.7.0
This variant is not supported in earlier versions.

Synopsis

love.graphics.setColor( rgba )

Arguments

table rgba
A numerical indexed table with the red, green, blue and alpha values as numbers. The alpha is optional and defaults to 1 if it is left out.

Returns

Nothing.

Examples

Set the color from r, g, b bytes

Using love.math.colorFromBytes we can specify color components in the range 0..255.

love.graphics.setColor(love.math.colorFromBytes(128, 234, 255))

Draw a red, blue and green circle

function love.draw()
	love.graphics.setColor(1, 0, 0)
	love.graphics.circle("fill", 50,50, 20)

	love.graphics.setColor(0, 0, 1)
	love.graphics.circle("fill", 50,100, 20)

	local myColor = {0, 1, 0, 1}
	love.graphics.setColor(myColor)
	love.graphics.circle("fill", 50,150, 20)
end

Display a Venn diagram

function love.load()
	love.graphics.setBackgroundColor(1, 1, 1)
end

function love.draw()
	local baseX   = love.graphics.getWidth()/2
	local baseY   = 400
	local radius  = 100
	local offsetY = radius/2 * math.sqrt(3)

	love.graphics.setBlendMode("multiply", "premultiplied")
	love.graphics.setColor(1, .6, .6)
	love.graphics.circle("fill", baseX-radius/2, baseY, radius)
	love.graphics.setColor(.6, 1, .6)
	love.graphics.circle("fill", baseX, baseY-offsetY, radius)
	love.graphics.setColor(.6, .6, 1)
	love.graphics.circle("fill", baseX+radius/2, baseY, radius)
end

See Also


Other Languages