|
 | | |
|
| |  |   |  |  | |  |  | |  |  | |  |  | |  | |
 | | | |
Gostaria de saber se o XNA possui algum meio de criar máscaras a partir de texturas, ex:
imagem : img12.imageshack.us/my.php?image=mask1.png
mascara : http://img5.imageshack.us/my.php?image=mask2.png
Pra falar a verdade, o que eu queria mesmo era criar um efeito "flash" tipo uma mascara branca que aparece cobrindo toda a imagem e aos poucos vai clareando até ficar totalmente transparente, mais como não encontrei nada parecido implementado, pensei em fazer manualmente mais ja empaquei em como criar essa máscara branca (ou de qualquer outra cor) a partir da textura.
Muito obrigado e até mais... |
|
|
|  |  | | |
| Re: Criação de "Máscaras" |
|
|
lbmaker escreveu
Gostaria de saber se o XNA possui algum meio de criar máscaras a partir de texturas, ex:
imagem : img12.imageshack.us/my.php?image=mask1.png
mascara : http://img5.imageshack.us/my.php?image=mask2.png
Pra falar a verdade, o que eu queria mesmo era criar um efeito "flash" tipo uma mascara branca que aparece cobrindo toda a imagem e aos poucos vai clareando até ficar totalmente transparente, mais como não encontrei nada parecido implementado, pensei em fazer manualmente mais ja empaquei em como criar essa máscara branca (ou de qualquer outra cor) a partir da textura.
Muito obrigado e até mais... |
olá lbmaker, tudo bem?
Dependendo do que você quer, esta pode ser uma possível solução:
Você tem que ter outra imagem(toda branca) que vai ser renderizada na frente da sua imagem normal. Daí é só montar o algoritmo para aquela imagem toda branca aparecer como se fosse um "flash"!
Existem outras soluções para esse problema? sim, existem, mas a que eu apresentei acima, eu acredito ser bem simples. 1º a gente começa com algo simples, depois vai aumentando a complexidade.
Se você tiver alguma dificuldade em executar essa solução que eu apresentei acima, por favor, fique a vontade em dizer pois eu posso montar um exemplo pra você.
Abraços amigo. @lucianoJoseBr
My Blog: http://lucjose.wordpress.com |
|
|
|  |  | | |
| Re: Criação de "Máscaras" |
|
|
É exatamente isso que eu queria fazer, mais porém criar a mascara em runtime, pois se eu for criar uma imagem mascara para cada imagem do meu game ele vai praticamente dobrar de tamanho.
Até mais e valew... |
|
|
|  |  | | |
| Re: Criação de "Máscaras" |
|
|
lbmaker escreveu
É exatamente isso que eu queria fazer, mais porém criar a mascara em runtime, pois se eu for criar uma imagem mascara para cada imagem do meu game ele vai praticamente dobrar de tamanho.
Até mais e valew... |
Eu fiz um método pra vc poder obter isso dinamicamente. Dá uma olhada e vê se isso serve para o que você está querendo fazer. Se não servir, avisa ai!
Texture2D GetFlashImage(Texture2D orignalImg)
{
Color[] colorsA = new Color[orignalImg.Width * orignalImg.Height];
Color[] colorsB = new Color[orignalImg.Width * orignalImg.Height];
Texture2D flashImg = new Texture2D(this.GraphicsDevice, orignalImg.Width, orignalImg.Height);
originalImage.GetData<Color>(colorsA);
int total = orignalImg.Width * orignalImg.Height;
for (int i = 0; i < total; i++)
{
Color cor = colorsA[i];
cor.R = 255;
cor.G = 255;
cor.B = 255;
colorsB[i] = cor;
}
flashImg.SetData<Color>(colorsB);
return flashImg;
}
|
@lucianoJoseBr
My Blog: http://lucjose.wordpress.com |
|
|
|  |  | | |
| Re: Criação de "Máscaras" |
|
|
Isso é o que eu temia, ter que criar as máscaras usando funções "pixel a pixel", mais já que é o único jeito vamos usar essa mesmo né...
só tem algumas auterações, pois como uso a cor rosa puro (255, 0, 255) como cor de fundo transparente, tem que fazer uma auteraçãozinha para quando for da cor rosa puro copiar ela, porque sinão cria uma mascara totalmente branca hehe... a auteração seria criar uma variavel maskColor para guardar a cor que será "ignorada" antes do loop :
Color maskColor;
maskColor = new Color(255, 0, 255, 255);
e dentro do loop só fazer um if para checar se a cor não é a cor da máscara :
if (cor != maskColor)
{
cor.R = 255;
cor.G = 255;
cor.B = 255;
}
Bem, resolveu meu problema, mais se souberem de algum meio de criar isso sem ser "pixel a pixel" não esqueçam de avisar.
Até mais e valew... |
|
|
|
|  |  | |  |  | |  |  | |  |
|
|
| | |
|
|
|  |
 |  |
|