Enviar um café pro programador

Pode me ajudar a transformar cafeína em código?

Criando alguns desenhos interessantes apenas com Linhas

Para mostrar melhor como usar linhas em programação gráfica em Java, vamos ensinar e mostrar o código de diversos programas que geram belas figuras, como essa abaixo.Para isso, vamos usar o código de nosso aplicativo do artigo sobre desenho de linhas.

Caso não tenha visto, pegue o código em nosso tutorial sobre como criar linhas em Java.
Para criar esses desenhos, vamos apenas alterar o conteúdo do método paintComponent.



Primeiro desenho:


Bonito não?
Parece complicado, mas é bem simples.

Criamos aqui, várias linhas. Somente linhas.

A primeira linha começa no ponto (0,0) e vai até (0, getHeight() ).
A segunda começa um pouco mai abaxo, em (0, 10) e vai até (10, getHeight() ).
A terceira começa mais abaixo, em (0,20) e vai até (20, getHeight() ).
...
A última linha começa em (0, getHeight() ) e termina em (getHeight() , getHeight() )

Ou seja, criamos linha que começam na lateral esquerda (width=0), na origem, e tocam  a parte inferior do frame (height = getHeight() ).
A cada iteração, vamos a origem descer em 10 pixels, ao passo que o final da linha vai crescendo, na horizontal, de 10 em 10 também.

Então, a origem vai decendo de 10 em 10, e o final da linha vai pra direita, de 10 em 10 também.
O código do método paintComponent para produzir tal figura, é:

public void paintComponent( Graphics g ) {
    super.paintComponent( g );
    int pixel=0;

    for(pixel=0 ; pixel <= getHeight() ; pixel += 10){
            g.drawLine(0, pixel, pixel, getHeight());
    }


}



Segundo desenho:



O que vamos fazer agora se assemelha ao desenho anterior.

Agora a origem das retas está na borda inferior.
A primera linha começa em (0, getHeight() ) e termina em (0, 0).
Depois essa origem sobe e o fim vai pra direita, e começa em (0, getHeight() - 10), e termina em (10, 0).
A terceira linha continua a subir com sua origem, agora em (0, getHeight() -20) e seu fim vai mais pra direita, terminando em (20, 0).
...

Logo, o código do método paintComponent pra gerar essa figura é:

public void paintComponent( Graphics g ){
    super.paintComponent( g );
    int pixel=0;


    for(pixel=getHeight() ; pixel >=0 ; pixel -= 10){
        g.drawLine(0, pixel, getHeight() - pixel, 0);
    }

}








Unindo os dois códigos, o método paintComponent será:

public void paintComponent( Graphics g ){
    super.paintComponent( g );
    int pixel=0;

    for(pixel=0 ; pixel <= getHeight() ; pixel += 10){
            g.drawLine(0, pixel, pixel, getHeight());
    }
for(pixel=getHeight() ; pixel >=0 ; pixel -= 10){ g.drawLine(0, pixel, getHeight() - pixel, 0); } }








Que resulta no belo desenho:




Exercício:

Com base no que foi criado e ensinado nesse artigo, programe um aplicativo em Java que gere o seguinte desenho, usando apenas linhas atráves do método drawLine:












Tente até a morte. Após algumas horas quebrando a cabeça sem conseguir gerar o desenho, clique no botão a seguir e veja o código.
Mas lembre-se: só se aprende tentando.
Código:
public void paintComponent( Graphics g ){
    super.paintComponent( g );
    int pixel=0;
    
        for(pixel=0 ; pixel <= getHeight() ; pixel += 10){
        g.drawLine(0, pixel, pixel, getHeight());
        }

    for(pixel=getHeight() ; pixel >=0 ; pixel -= 10){
        g.drawLine(0, pixel, getHeight() - pixel, 0);
    }
    
    for(pixel=0 ; pixel <= getHeight() ; pixel +=10){
        g.drawLine(getWidth(), pixel, getWidth() - pixel, getHeight());
    }
    
    for(pixel=getHeight() ; pixel >=0 ; pixel -= 10){
        g.drawLine(getWidth(), pixel, getWidth() - (getHeight() - pixel), 0);
    }
    
}

4 comentários:

Anônimo disse...

UMA CRIANÇA OU UM ADOLESCENTE SUPERDOTADO É CAPAZ DE FAZER NÃO SÓ PROGRAMAS PARA DESENHOS SIMPLES, MAS TAMBÉM PROGRAMAS PARA DESENHOS EXTREMAMENTE COMPLEXOS!!!

Apostila de Java disse...

Nem precisa ser "superdotado" não, basta ser esforçado e persistente.

Boa parte dos programadores começaram seus estudos e interesse nessa área ainda bem jovens.

Anônimo disse...

Esse curso tem me ajudado muito, muito obrigado!

Anônimo disse...

fiz esse desenho :P
http://www.4shared.com/photo/JJcgSs2rba/Sem_ttulo.html

Contribuir com o Java Progressivo

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo


Tutoriais de Java