Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Ho affidato ai due modelli lo stesso mestiere ma non lo stesso identico prompt: trasformare una storia illustrata in un video usando una RTX 3090 e modelli locali. Ne sono usciti due film, due applicazioni e due idee opposte di efficienza. Fucina, progettata con Fable 5, colpisce di più nei primi secondi. Storyboard Studio, costruito con ChatGPT/Codex, regge meglio sulla distanza e vince il confronto complessivo, ma di stretta misura
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Lenovo ha lanciato il ThinkTab X11 rimettendo piede nel segmento dei tablet Android con il marchio Think dopo oltre un decennio di assenza. Il risultato è un dispositivo che prende una direzione precisa: massima dotazione funzionale, costruzione resistente, autonomia fuori dagli schemi
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot
AMD Advancing AI è l'appuntamento annuale con il quale l'azienda americana mostra quelle che sono le proprie novità dal versante datacenter. Tra piattaforma Helios, GPU Instinct MI455X e processori EPYC di sesta generazione tutto quello che serve per processare l'IA sempre più complessa ed esigente
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-03-2004, 18:45   #1
cavva81
Member
 
Iscritto dal: Nov 2003
Città: Modena
Messaggi: 149
[JAVA] alcune domanda sulla Grafica/swing

Ciao a tutti,

quello che voglio iniziare a progettare è un programma tipo freevo , chiaamente con funzionalità un pò diverse.

quindi, per partire , volevo sapere:

- in java è possibile aprire i programmi in "full-screen" ? senza cioè presentare i classici bottoni tipo chidi, iconizza, ecc...

- riesco a mettere come sfondo della finestra un qualcosa tipo un'immagine o, meglio ancora, un filmato ?
cavva81 è offline   Rispondi citando il messaggio o parte di esso
Old 07-03-2004, 19:14   #2
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Si&Si, a patto di usare una versione recente (1.4.0 o superiore).

Appena lo trovo ti passo il link al tutorial di Sun sull'argomento.

Ciao.
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 07-03-2004, 21:00   #3
srcProgram
Junior Member
 
Iscritto dal: Mar 2004
Messaggi: 7
Salve...

se utilizzi i Frame o JFrame come finestre su cui lavorare... puoi avvalerti del metodo setUndecorated...
" setUndecorated(true); " passando true a questo metodo, la tua finestra si presentera' senza i classici bottoni chiudi, riduci a icona...
srcProgram è offline   Rispondi citando il messaggio o parte di esso
Old 07-03-2004, 22:03   #4
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
srcProgram ha pienamente ragione, però qui la faccenda è uno zinzinello più complicata.

Noi lasciamo che parli il codice, poi se c'è qualcosa da spiegare, siamo qui per quello.

FullScreenBuffer

Codice:
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;

public class FullScreenBuffer {
    GraphicsDevice device = 
	GraphicsEnvironment.
	    getLocalGraphicsEnvironment().
	    getDefaultScreenDevice();
    
    public void enterFullScreen(DisplayMode displayMode, JFrame window) {
	window.setUndecorated(true);
	window.setResizable(false);
	/* ignora lengthrichieste di aggiornamento*/
	/* che provengono dal sistema operativo */
	window.setIgnoreRepaint(true);
	/* modalità fullscreen o mimic-fullscreen*/
	device.setFullScreenWindow(window);
	if(displayMode != null && device.isDisplayChangeSupported()) {
	    device.setDisplayMode(displayMode);
	}
    }
    
    public void exitFullScreen() {
	Window window = device.getFullScreenWindow();
	if(window != null) {
	    window.dispose();
	}
	device.setFullScreenWindow(null);
    }
    
    public Graphics2D getGraphics() {
	Window window = device.getFullScreenWindow();
	if(window != null) {
	    return (Graphics2D)window.getBufferStrategy().getDrawGraphics();
	}
	return null;
    }
    
    public void update() {
	Window window = device.getFullScreenWindow();
	if(window != null) {
	    BufferStrategy strategy = window.getBufferStrategy();
	    if(strategy.contentsLost() == false) {
		strategy.show();
	    }
	}
    }
}
Engine2D

Codice:
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.imageio.*;

public class Engine2D implements Runnable {
    boolean loop = false;
    FullScreenBuffer fscreen = new FullScreenBuffer();
    DisplayMode displayMode = new DisplayMode(1024, 768, 32, 85);
    Image image = null;
    Thread runner = null;
    
    /** Creates a new instance of Engine2D */
    public Engine2D() {
	try {
	    image = ImageIO.read(new File("z:\\immagine.png"));
	} catch(IOException e) {
	    e.printStackTrace(System.err);
	    System.exit(0);
	}
    }
    
    public void start() {
	if(loop == false) {
	    fscreen.enterFullScreen(displayMode, new javax.swing.JFrame());
	    Toolkit.getDefaultToolkit().getSystemEventQueue().push(new KeyQueue());
	    if(runner == null) {
		runner = new Thread(this);
	    }
	    loop = true;
	    runner.start();
	}
    }
    
    public void stop() {
	loop = false;
	fscreen.exitFullScreen();
	System.exit(0);
    }
    
    public void run() {
	while(loop) {
	    Graphics2D graphics = fscreen.getGraphics();
	    
	    graphics.drawImage(image, 0, 0, null);
	    
	    graphics.dispose();
	    
	    fscreen.update();
	}
	
    }
    
    
    class KeyQueue extends EventQueue {
	protected void dispatchEvent(AWTEvent e) {
	    if(e instanceof KeyEvent) {
		KeyEvent ke = (KeyEvent)e;
		
		int keyCode = ke.getKeyCode();
		
		if(keyCode == KeyEvent.VK_ESCAPE) {
		    stop();
		}
	    }  else {
		super.dispatchEvent(e);
	    }
	}
    }
    
}

MainClass

Codice:
public class MainClass {
    public static void main(String[] args) {
	new Engine2D().start();
    }
}
FullScreenBuffer si occupa di gestire la finestra "schermo intero". In questo caso si tratta di una finestra per active-rendering (con doppio buffer e page-flipping).

Una volta che hai l'oggetto Graphics2D su cui disegnare, il resto diventa una questione di fantasia (e un bel po' di tempo).

Engine2D è poco più di un loop che aggiorna lo schermo.

La pressione del tasto "esc" termina il ciclo del mini-motore di rendering. In questo caso ho inserito nella coda di gestione degli eventi AWT un'estensione di EventQueue che garantisce l'uscita alla pressione del tast esc qualunque sia il componente in cui il tasto viene premuto (una mera questione di sicurezza, poi sceglierai tu come terminare la sessione full-screen).

Il tutto richiede l'uso di un JDK 1.4.2.

Ciao.
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2004, 00:37   #5
cavva81
Member
 
Iscritto dal: Nov 2003
Città: Modena
Messaggi: 149
grazie ragazzi, e complimenti a PGI per il codice ke appena posso lo provo .

io però con swing e soci in java stò proprio a zero, quindi prima di immergermi negli how-to chiedo a voi, se invece di un'immagine ci volessi un filmatino (da metterre in ricorsione) come sfondo... sarebbe complicato ? altra cosa, quando vado a posizionare i vari componenti Swing ci sono cose particolari a cui devo prestare attenzione ?
cavva81 è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2004, 11:47   #6
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Se vuoi maneggiare filmati c'è l'API JMF (trovi il pacchetto sul sito sun). In estrema sintesi, nell'API trovi un componente AWT(Player.getqualcosa, tanto per essere precisi ) già bell'e pronto per visualizzare filmati. Tutto quello che devi fare è inserirlo nel layout della finestra e dargli in pasto un filmato.

Se intendi usare i componenti Swing (bottoni, pannelli etichette ecc.) il ciclo di Engine2D non va bene (anzi, tutta la classe Engine2D può andare al macero).

Quello che dovresti fare è costruire la finestra (JFrame) usando il normale procedimento dell'AWT Java (jframe.getContentPane().blabla ...) e poi far masticare la finestra a FullScreenBuffer, che la proietta sullo schermo in modalità full-screen.

Ricorda che se elimini Engine2D devi trovare un procedimento alternativo per uscire dalla modalità full-screen (ma è sufficiente un bottone con su scritto "esc" da qualche parte, a cui associ una chiamata a fullscreenbuffer.exitFullScreen())
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2004, 13:57   #7
cavva81
Member
 
Iscritto dal: Nov 2003
Città: Modena
Messaggi: 149
Quote:

Se intendi usare i componenti Swing (bottoni, pannelli etichette ecc.) il ciclo di Engine2D non va bene (anzi, tutta la classe Engine2D può andare al macero).
ecco, questo è quello ke temevo...
quindi se voglio utilizzare i componenti Swing non riesco ad avere uno sfondo con un'immagine o un filmato, giusto ?
ma riesco ad evitare l'utilizzo dei componenti swing? io devo avere un'iterazione con l'utente, come posso non utilizzare i componenti swing o AWT ?
cavva81 è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2004, 14:14   #8
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Quote:
Originariamente inviato da cavva81
ecco, questo è quello ke temevo...
quindi se voglio utilizzare i componenti Swing non riesco ad avere uno sfondo con un'immagine o un filmato, giusto ?
ma riesco ad evitare l'utilizzo dei componenti swing? io devo avere un'iterazione con l'utente, come posso non utilizzare i componenti swing o AWT ?
Se usi i componenti Swing puoi avere sullo sfondo anche mio nonno che fa ciao con la manina, solo che ottieni la cosa in modo diverso (e a dire il vero anche più semplice) rispetto alla costruzione di un'interfaccia a partire da immagini "raw".

L'interazione con l'utente si ottiene anche senza componenti precotti.

Un pulsante è un'immagine localizzata sullo schermo, è sufficiente ottenere le cordinate del mouse per poter costruire una reazione dell'interfaccia. In pratica tratti lo schermo come se fosse una grossa mappa interattiva e nel ciclo di rendering usi un albero che contiene le informazioni relative a ciascun componente attivo sullo schermo, ad ogni passata "pitturi" ogni singolo componente usando le sue informazioni di stato (se è premuto, un pulsante sarà rappresentato dall'immagine B anzichè A, il componente video mostra il frame corrente del flusso video e via dicendo).

E' il classico lavoro certosino, ma potrebbe essere "divertente".
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2004, 08:13   #9
cavva81
Member
 
Iscritto dal: Nov 2003
Città: Modena
Messaggi: 149
mmmm ok, è meglio se prima mi leggo qualcosa di swing visto ke non ci stò più capendo niente

qulache link a qualche buon tutorial ? mi interesse molto il fatto di crearsi dei componenti a doc, esiste qualke buon esempio/ tutorial ?

thanks.
cavva81 è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2004, 13:23   #10
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Introduzione a swing

http://java.sun.com/docs/books/tutor...ing/index.html

Il malloppone:

http://java.sun.com/products/jlf/ed1/dg/index.htm
PGI è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090 Fable e Sol a confronto: due cartoni animati cre...
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader Tascabile e con Android: BOOX Go 6 Gen II &egrav...
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro Recensione Lenovo Idea Tab Plus: il tablet da 12...
Microsoft si arrende: permetterà di disa...
Tineco FLOOR ONE S7 Pro a 249€: la scopa...
Flickr cancella gli account mai usati: b...
AMD felicissima per le prestazioni della...
Hisense 43'' 4K e Haier 50'' 4K a 199€: ...
WORX WG743E a 199€: il tosaerba a batter...
Chiede aiuto per un crash su Steam, si r...
Altro che alternativa low cost: le memor...
Debutta Facebook Verified: un badge grat...
iPhone 17 Pro a 1.229€ su Amazon: il mod...
Polymarket oscurato in Italia, cosa ha s...
Aumenti illegittimi da Netflix, parte la...
Stop alle offerte 'edizione limitata' di...
Tesla è riuscita a ottenere memor...
Meta si svincola dall'uso delle rinnovab...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:59.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v