Newsgroup: it.comp.java
Titolo: disegnare un punto

Ciao, in Java c'e' un modo di disegnare uno punto (o piu' punti) -delle 
dimensioni di un pixel- di coordinate assegnate, senza utilizzare il 
trucco di far collassare un rettangolo in un punto?
..avete un codice di esempio?
grazie

liu (11/07/2011):

Alloca un BufferedImage (java.awt.image.*) all'avvio della tua
applicazione, in modo da poterci disegnare dentro in qualsiasi momento,
mentre nel paint() o paintComponent() non fai altro che trasferire i
contenuti del BufferedImage sul Graphics passato da Swing:
import java.awt.image.*;
...
private BufferedImage myImage=
   new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
...
public void paint(Graphis g) {
   g.drawImage(0,0,myImage,null);
}
Fatta questa piccola modifica, puoi modificare i contenuti di myImage
in qualsiasi momento, e se guardi la documentazione di BufferedImage
troverai anche questo comodissimo metodo:
setRGB(int x, int y, int rgb)
Se vuoi utilizzare i metodi di Graphics per disegnare sul myImage puoi
anche fare cosï¿œ:
Graphics2D g=(Graphics2D)myImage.getGraphics();
...
g.drawLine...
g.drawOval...
g.drawText...
...
g.dispose(); //Rilascia tutte le risorse
Ricordati sempre che dopo ogni modifica a myImage devi chiamare repaint
sull'oggetto contenitore in modo che Swing si prepari a riportare tutte
le modifiche a video tramite paint.
In fase di allocazione iniziale, le dimensioni del buffer (Width e
Height) puoi deciderle grandi in modo arbitrario, tenendo presente che
drawImage non disegnerï¿œ mai fuori dalla finestra della tua
applicazione.
Potresti essere preso dalla tentazione di allocare un buffer grande
quanto la risoluzione del tuo monitor, perï¿œ potrebbe portare ad uno
spreco di memoria, dato che se il tuo buffer ï¿œ troppo grande ci sarï¿œ
sempre un'area che non verrï¿œ mai utilizzata. Ci sono diverse soluzioni
a questo problema, ma penso che sarï¿œ meglio affrontarle a tempo debito,
senza mettere troppa carne al fuoco per ora.
Sai, ï¿œ bello vedere qualcuno che smanetta ancora con il toolkit
Swing/Awt, in un mondo dove tutti sono presi dalla fregola del Web a
tutti i costi. Se ti applichi per bene, scoprirai che le applicazioni
Desktop possono dare ancora tante soddisfazioni.
Ok, ora aspetto solo le critiche dei ggggiovani sviluppatori che "le
applicazioni desktop sono vecchie, aggiornati nonno". Fate pure, vi
aspetto :)
-- 
erk: C0 CE FE 84 C2 27 F7 5B D0 7A 7E B8 46 50 9F 93 B2 38 E7 70 DA CB
9F F4 A3 88 F8 12 48 2B E2 1B riv: 47 EE 74 54 E4 77 4C C9 B8 96 0C 7B
59 F4 C1 4D - further info: Google it!
(per rispondere personalmente leva IlDitoDalCulo)


Mi spiace per definizione i punti non sono disegnabili, il trucco che di 
solito si usa è quello che hai detto te, ma volendo puoi usare anche un' 
ellisse.
http://download.oracle.com/javase/tutorial/2d/overview/primitives.html
Saluti Patrick

Patrick (15/07/2011):

Se parliamo di geometria euclidea, Point2D rappresenta il concetto di
punto geometrico, ed è corretto dire che non sono disegnabili, ma
l'intenzione di Liu era quella di accendere semplici pixel.
Il mio metodo non andava bene?


 l'intenzione di Liu era quella di accendere semplici pixel.
Io mi limito a disegnare una linea con origine e destinazione coincidenti. Una sola istruzione.
Ciao.


Scusa occhio, liu chiedeva se poteva disegnare un punto come lo si 
disegna con una matita, senza dover collassare un rettangolo o altra 
primitiva, quindi accendere un singolo pixel senza far collassare una 
primitiva non è possibile. Sempre che io non abbia capito male
Saluti Patrick