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.brdelphi-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]