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]