How do I set the visibility of some image in Love2d? Like for example, let it 10%, 25% or 50% visible.
How do I set the visibility of some image in Love2d? Like for example, let it 10%, 25% or 50% visible.
An alternative to my comment and my previous response is to use the setColor method before drawing the image.
local opacidade = .5; -- de 0 à 1
love.graphics.setColor(0xFF, 0xFF, 0xFF,
0xFF * opacidade);
Or without fractions:
local opacidade = 255; // de 0 à 255
love.graphics.setColor(0xFF, 0xFF, 0xFF, opacidade);
Setting transparency
On first use, opacity (transparency) is defined using a number ranging from 0 to 1, which optionally contains decimals. 0
is 0% visible and 1
is 100% visible. .5
(or 0.5
) is 50% visible. This can be more specific, for example: .55559
.
In the second use, the opacity is defined using an integer ranging from 0 to 255. 0
is 0% visible and 255
is 100% visible. 127
is almost 50% visible.
Example:
local Imagem1, opacidade;
opacidade = .5; -- 50%
function love.load()
Imagem1 = love.graphics.newImage 'test.png';
end
function love.draw()
-- setColor vem antes...
love.graphics.setColor(0xFF, 0xFF, 0xFF,
0xFF * opacidade);
-- de draw.
love.graphics.draw(Imagem1);
end
Example repeating image 3 times:
local imagem1;
function love.load()
-- Carrega a imagem
imagem1 = love.graphics.newImage 'test.png';
end
function love.draw()
-- #Duplicata1 20% visível (No canto.)
love.graphics.setColor(0xFF, 0xFF, 0xFF, .2 * 0xFF);
love.graphics.draw(imagem1);
-- #Duplicata2 50% visível (No meio.)
love.graphics.setColor(0xFF, 0xFF, 0xFF, .5 * 0xFF);
love.graphics.draw(imagem1, 150);
-- #Duplicata3 100% visível (Em cima de todas.)
love.graphics.setColor(0xFF, 0xFF, 0xFF, 0xFF);
love.graphics.draw(imagem1, 350);
end
Based on my comment, you can set the visibility of an image by copying its data, mapping its pixels to the alpha field, and then creating another image using the modified data.
You only need to do this once if visibility needs to be set.
local imagem2;
function love.load()
-- Carrega a imagem
local imagem1 = love.graphics.newImage 'test.png';
-- Pega seus dados
local imageData = imagem1:getData();
--[=[ https://love2d.org/wiki/CompressedImageData
Adiciona um erro para dados compressos
* (dados compressos vem de imagens
* do formato DXT1, DXT5, and BC5 / 3Dc, raramente usados).
* Eu pessoalmente não sei que dados são e como funcionam.
* O seu uso mais comum será BMP, JPEG ou PNG, creio eu. ]=]
assert(not imagem1:isCompressed(),
'Formato de imagem desconhecido');
-- A opacidade vai de 0 até 1
local opacidade = .2;
-- Muda a opacidade de cada pixel
imageData:mapPixel(function(x, y, r, g, b, a)
return r, g, b, a * opacidade;
end);
imagem2 = love.graphics.newImage(imageData);
end
function love.draw()
love.graphics.draw(imagem2);
end