Suporte no desenvolvimento de jogos


    [Java]Carregando e mostrando imagens com java.awt

    CDZ
    CDZ
    Novato
    Novato

    Mensagens : 22
    Créditos : 0
    Cash : 0

    [Java]Carregando e mostrando imagens com java.awt Empty [Java]Carregando e mostrando imagens com java.awt

    Mensagem por CDZ em Sab Nov 03, 2018 1:59 pm

    Tipo: Tutorial
    Nível: Intermediário.
    Linguagem: java.
    Contato e mais informações: https://lucasindiesh1p.wordpress.com
    Mais tutorais sobre: https://lucasindiesh1p.wordpress.com/2018/11/03/carregando-e-mostrando-imagens-com-java-awt/

    Passo 0: Antes de tudo, saiba que no java, em relação a posição das imagens, elas são definidas por coordenadas nas telas X,Y, por padrão esse X,Y começa sempre no canto-esquero do topo da tela, assim se você adicionar +1 na coordenada x ela irá para direita e +1 na y ela ira para baixo.
    Veja essa imagem que o site da oracle disponibilizou:
    [Java]Carregando e mostrando imagens com java.awt 2D-11
    Passo1): Primeiro configure a sua classe para aonde você irá desenhar:
    Código:
    Applet ou Frame ou JApplet ou JFrame
    ?
    obs: no caso de Applet você terá colocar dentro do método paint o setSize, exemplo: 
    Código:
    this.setSize(640,480)
    , pois sem isso, o applet fica com suas dimensões padrão que são pequenas e você não vai ver sua imagem.
    Passo2) Carregar os dados da imagem
    Passo3) Desenhar a imagem no programa.
    Primeiramente importaremos as seguintes classes padrões do java:
    Código:
    import java.awt.Graphics2D;

    OU
    Código:
    import java.awt.Graphics; 
    (você escolhe entre o graphics e o graphics2d, o graphics2d é como se fosse o graphics so que com alguns recursos extras)
    Nesse guia estamos usando o Graphics2D, mas no caso de optar por usar apenas o graphics

    •  que mudará é apenas a implementação (mais abaixo) do paint(), assim:


    REMOVA esta linha:
    Código:
     Graphics2D g2 = (Graphics2D)g; 

    e
    ALTERE
    esta linha:
    Código:
    g2.drawImage(imagemexemplo, 25, 50, 25, 25, this);

    para
    Código:
    g.drawImage(imagemexemplo, 25, 50, 25, 25, this);
    Por que? Pois o Graphics2D é apenas uma extensão do graphics, e o método darwImage() que usamos aqui é do Graphics que o Graphics2D está herdando na hierarquia das classes.
    também importaremos (para ambos os casos graphics ou graphics2D) os seguintes:
    Código:
    junto com mport.java.awt.Image;
    import java.awt.Toolkit;
    import java.net.URL;
    ,
    Agora, ja dentro da sua classe, vamos as variáveis e aos métodos:
    Vamos criar uma variável para a imagem, um objeto da imagem.
    Exemplo:
    Código:
    private Image imagemexemplo = null;
     //estamos iniciando ela sem valor algum inicialmente.
    Para podermos CARREGAR/ABRIR o arquivo da imagem vamos criar um get para instruir o programa de qual é o caminho da imagem:
    Código:
    public Image getImage(String path)
    {
    Image tempImage = null;
    try{//"tentar" colocamos isso para prevenir, caso a imagem não exista.
    //o "Trabalhandoimagens" é o nome dessa classe que estamos, você vai colocar o nome da sau classe
    URL imagemURL = Trabalhandoimagens.class.getResource(path);
    tempImage = Toolkit.getDefaultToolkit().getImage(imagemURL);
    }
    catch (Exception e){
    System.out.println("Ocorreu um erro - " + e.getMessage());
    }
    return tempImage;
    }
    Com o java awt, usamos o Graphics ou o Graphics2D dele para trabalhar com imagens.
    Com Graphics2D:
    Criamos um método chaado paint que vai receber o gráfico do programa como parâmetro, para desenhar nele.
    Assim:
    Código:
    public void paint(Graphics g){
    Graphics2D g2 = (Graphics2D)g; //assim estaremos utilizando o Graphics2D e não o graphics.
    }

    Agora vamos fazer o método paint saber qual imagem ele vai desenhar:
    Código:
    public void paint(Graphics g){
    if(imagemexemplo == null)
    imagemexemplo = getImage("heheimagem.png");
    Graphics2D g2 = (Graphics2D)g;
    }

    Agora vamos desenhar a imagem
    Utilizamos o método drawImage dele. Existem vários métodos chamados drawImage com o graphics2d mas cada um tem diferentes configurações de parâmetros, use a que mais atender ao que você quer:
    Código:
    public void paint(Graphics g){
    if(imagemexemplo == null)
    imagemexemplo = getImage("heheimagem.png");
    Graphics2D g2 = (Graphics2D)g;
    g2.drawImage(imagemexemplo, 25, 50, 25, 25, this);
    //colocamos esse "this" por causa do ImageObserver.
    //Exemplo: se esta classe for Applet, esta informando justamente isto ao ser desenhado.
    }
    Código:

    } //fim da classe que você criou
    fim.
    Referências:
    https://docs.oracle.com/javase/tutorial/2d/overview/coordinate.html
    https://docs.oracle.com/javase/7/docs/api/java/nio/file/Path.html
    https://docs.oracle.com/javase/7/docs/api/java/awt/Toolkit.html
    https://stackoverflow.com/questions/19212990/what-is-an-imageobserver
    https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getResource-java.lang.String-
    https://docs.oracle.com/javase/8/docs/api/java/applet/Applet.html
    http://www.guj.com.br/t/o-que-e-deprecated/120578

      Data/hora atual: Qua Maio 22, 2019 1:39 am