O algoritmo é simples sim. É só você analisar os vizinhos de cada pixel em
uma função recursiva. Se esse pixel estiver em branco, analise cada um dos
seus "vizinhos". Se estes vizinhos também estiverem em branco, faça assim
sucessivamente. Como definição primária de uma função recursiva, estabeleça
um caso-base não recursivo, de solução direta. Depois da chamada recursiva
de análise de cada um dos vizinhos, verifique se o pixel atual é branco e
pinte da nova cor. Se não for branco, simplesmente saia. Não testei esse
raciocínio, mas é semelhante a um jogo de campo minado que fiz no pascal =D

Uma solução não-recursiva (iterativa) para esse exemplo poderia ser você
fazer o seguinte:
1 - ao clicar em um pixel, ver algum pixel da borda do desenho localizado
acima ou abaixo, à esquerda ou à direita do ponto clicado.
2 - a partir desse ponto da borda, localizar todos os outros pontos da borda
(supondo que os pontos da borda estão lado a lado)
3 - analisar toda a área do desenho, cada um dos pontos; se a coordenada X
do ponto analisado estiver entre os dois pontos da borda mais próximos com
mesma coordenada Y do ponto analisado (o ponto analisado deve ter mesma
coordenada Y dos pontos da borda mais próximos a esse ponto);
4 - analisar esse ponto novamente, mas verificando se a coordenada Y desse
ponto está entre entre dois pontos da borda mais próximos com a mesma
coordenada X.
5 - se 3 e 4 forem verdadeiras, então o ponto analisado está dentro da
borda. Logo, deve ser pintado.

Não testei essa solução, mas acho que deve funcionar. Qualquer coisa, manda
email aí pra ver o resultado.
Eu prefiro a solução recursiva.
[]'s


Em 01/08/07, Benn Alle <[EMAIL PROTECTED]> escreveu:
>
>   Luiz
>
> Acho que dá sim,
>
> Veja só, se a figura original for somente com linhas pretas você pode
> pegar
> a cor de pixel que ela clicou e ir ir verificando cada pixel ao redor, se
> não for preto você pinta da nova cor, e se for preto você para naquele
> sentido.
> Só que só vai funcionar se as figuras forem fechadas, se tiver uma conexão
> entre duas áreas ele vai pintar também, como ocorre no paint, porém você
> não
> vai poder permitir que ela pinte com a cor preta, o que você pode fazer é
> usar para a borda da imagem uma cor que não seja bem preto e não colocar
> esta cor na paleta de cores que você vai disponibilizar para ela.
> Acho que o algoritmo para verificar as bordas não vai ser muito fácil de
> fazer, mas não é impossível.
> Se você quizer entrar nesta impreitada eu te ajudo.
>
> Um Abraço,
> Benn
>
> Em 01/08/07, [EMAIL PROTECTED] <escobar%40megasistema.com.br> <
> [EMAIL PROTECTED] <escobar%40megasistema.com.br>>
> escreveu:
> >
> > até tentei mas pelo tempo, ou melhor falta dele, mandei usar o paint do
> > windows mesmo, as vezes corel, photoshop...
> > hoje ela tem 7 anos e se vira heheheee...
> >
> > Luiz Escobar - Analista/Desenvolvedor:
> > WEB - HTML/JavaScript/PHP/MySQL
> > WINDOWS - Delphi/ASSEMBLER/MySQL/xBase
> > SERVIDORES - IntraNetWare4.11, LINUX-RedHat9, Windows
> >
> > ----- Original Message -----
> > From: [DirectWeb] - Marcio
> > To: delphi-br@yahoogrupos.com.br 
> > <delphi-br%40yahoogrupos.com.br><delphi-br%40yahoog
> rupos.com.br>
> > Sent: Wednesday, August 01, 2007 11:22 AM
> > Subject: [delphi-br] Programa clique e pinte - infantil
> >
> > Olá ...
> >
> > Estou tentando fazer um software estilo clique e pinte para meus filhos,
> > porém não achei uma forma de fazer o preenchimento das partes da figura
> > ... uma figura inicialmente branca contornada em preto ... alguém já fez
> > algo desse tipo ? tem alguma idéia pra me dar ?
> >
> > []s
> >
> > Marcio
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Anderson "Caco" Marques Ferraz
2.º Período de Engenharia da Computação - UEFS
"A player who makes the team great is more valuable than a great player.
Losing yourself in the group, for the good of the group, that's teamwork."
(John Wooden)


[As partes desta mensagem que não continham texto foram removidas]

Responder a