Perdoem reativar tópico antigo, mas estou atrás disso fazem alguns 
dias.

Meu problema está sendo interpretar as cores de cada pixel. Preciso 
mudar de branco para vermelho e vice-versa. Os contornos limitadores 
são pretos.

Agradeço qualquer ajuda ou idéia.

[ ]'s
Dirceu Portéla


--- Em delphi-br@yahoogrupos.com.br, "Anderson Marques Ferraz" 
<cacom...@...> escreveu
>
> 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 <benna...@...> 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, esco...@... <escobar%40megasistema.com.br> <
> > esco...@... <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
> > > 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
> > >

Responder a