Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    415

    [Java] Muovere Immagine in un Canvas

    Salve a tutti! Ho un problema che ho cercato di risovere in tutti i modi senza successo. Praticamente ho un canvas, dove devo spostare una gif animata con lo sfondo trasparente. Se uso il metodo drawImage(...) con coordinate x e y che si incrementano in un ciclo, l'immagine gif si muove, lasciando una traccia dietro di sè (come giustamente deve fare xkè è stato utilizzato il metodo drawImage()). Come faccio ad eliminare questa traccia? Ho provato anche a ridisegnare ogni volta nel ciclo lo sfondo del canvas, ma purtroppo il refresh dell'immagine si nota troppo. Già che ci sono, vi chiedo anche come poter disegnare più di un immagine nel canvas, anche in momenti diversi, e con velocità di movimento diverse. Grazie infinite a tutti!

    P.S. Questa è la classe Grafica che dovrebbe disegnare tutto

    package giochino;

    import java.awt.Canvas;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;

    public class Grafica extends Canvas {

    private Image Pesce;
    private Image Sfondo;

    public Grafica() {
    this.setSize(400, 400);

    Pesce = getToolkit().getImage("pesce.gif");
    Sfondo = getToolkit().getImage("nero.jpg");
    }

    public void paint(Graphics g){
    Graphics2D Grafica = (Graphics2D) g;
    for (int i = 250; i > 0; i--){
    try {
    Thread.sleep(10);
    } catch (InterruptedException ex) {
    ex.printStackTrace();
    }
    Grafica.drawImage(Sfondo, 0, 0, this);
    Grafica.drawImage(Pesce, i, 150, this);
    }
    Grafica.dispose();
    }
    }


    mentre questo è il Main:

    package giochino;

    public class Main extends javax.swing.JFrame {

    public Main() {
    this.setTitle("Lollata!");
    this.setSize(400, 400);
    this.getContentPane().add(new Grafica());
    this.setDefaultCloseOperation(javax.swing.JFrame.E XIT_ON_CLOSE);
    this.setVisible(true);
    }

    public static void main(String[] args) {
    Main Principale = new Main();
    }
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    415
    Uppo una volta per scaramanzia...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.