|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 1218
|
[JAVA] disegnare smile help
ragazzo ho scritto questa classe...
Codice:
package javaapplication6;
import java.awt.*;
// disegna uno smile
public class Smile {
//caratteristiche dell'oggetto
double xs, ys;
double dims;
// pone lo smile nella posizione 0, 0
public Smile ()
{
xs=0;
ys=0;
dims=1;
}
/** Costruttore , costruisce lo smile
* @param x coordinata x del punto in alto a sinistra
* @param y coordinata y del punto in alto a sinistra
* @param dimensione dimensione del quadrato contente lo smile
*/
public Smile (double xp, double yp, double dimensione) {
xs=xp;
ys=yp;
dims=dimensione;
}
/** rendering della faccina
* Per ottenere il rendering devo
* passare la ampiezza e la altezza massima
* della finestra dove disegnare
*
*
*/
public void draw (int xa, int ya, Graphics g, String ciao) {
int x=(int) (xs * xa);
int y=(int) (ys * ya);
// per mantenere la faccina quadrata e magari dentro lo schermo
// prendo la dimensione minima
int dim= (int)(xa>ya?ya:xa);
g.drawOval( x, y, dim, dim ); //faccia
g.drawOval( x+dim/4, y+dim/4, dim/6, dim/4 ); //occhio sinistro
g.drawOval( x+5*dim/8, y+dim/4, dim/6, dim/4 ); //occhio destro
g.drawArc ( x+dim/4, y+dim/2, dim/2, dim/3, 0, -185); //bocca
g.setColor(Color.BLUE);
//rettangolo
g.drawRect(300, 40, 160, 90);
g.drawString( "Hello "+ciao, 350, 85);
//triangolo
int [] z={300,350,390};
int [] c={170,130,130};
int punti=3;
g.drawPolygon(z,c,punti);
}
}
lo smiley viene stampato traslato verso destra???
__________________
Athlon64 3500 (Winchester), Asus A8V-E Deluxe, X700Pro 256MB, Maxtor 200GB Sata,Ali Enermax 400W, Mast. Pionner 109,Lettore dvd LG, Creative 2.1 3200, LG 1980q, Canon Pixma mp500. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Se vuoi sapere la dimensione in pixel di una stringa disegnata sul Graphics, prendi il FontMetrics dal Graphics e usa i metodi stringWidth() ecc....
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 1218
|
credo che tu non abbia capito...
vorrei fare una cosa del tipo se su variabile ciao il contenuto è dario allora stampa lo smile al centro se il contenuto è carlo stampa lo smile a sinistra se davide lo stampa a destra.... come si fa??
__________________
Athlon64 3500 (Winchester), Asus A8V-E Deluxe, X700Pro 256MB, Maxtor 200GB Sata,Ali Enermax 400W, Mast. Pionner 109,Lettore dvd LG, Creative 2.1 3200, LG 1980q, Canon Pixma mp500. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 1218
|
up
__________________
Athlon64 3500 (Winchester), Asus A8V-E Deluxe, X700Pro 256MB, Maxtor 200GB Sata,Ali Enermax 400W, Mast. Pionner 109,Lettore dvd LG, Creative 2.1 3200, LG 1980q, Canon Pixma mp500. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2780
|
Se disegni sempre sullo stesso oggetto Graphics allora devi passare al metodo draw un parametro in più che indichi l'offset orizzontale da cui iniziare a disegnare.
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2001
Messaggi: 458
|
Non ti sarò di grande aiuto, però....
if(ciao.equals("Dario") ...imposta le coordinate al centro if(ciao.equals("Carlo") ...imposta le coordinate a destra
__________________
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 1218
|
e come faccio a fare l'offset dello smile??
__________________
Athlon64 3500 (Winchester), Asus A8V-E Deluxe, X700Pro 256MB, Maxtor 200GB Sata,Ali Enermax 400W, Mast. Pionner 109,Lettore dvd LG, Creative 2.1 3200, LG 1980q, Canon Pixma mp500. |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2780
|
Guarda, riguardando bene il codice rimangio quello che ho detto ma non mi è chiara una cosa, perché nel metodo draw fai:
Codice:
int x=(int) (xs * xa);
int y=(int) (ys * ya);
Detto questo, se la posizione e la dimensione dello smile la definisci nel costruttore e poi il draw rispetta questi parametri non serve alcun offset, semplicemente nel main o dove crei gli smile li creerai tutti passando ai costruttori delle posizioni (x) differenti. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:09.












VIDEOLEZIONI di Matematica, Informatica, Fisica I & II e MOLTO altro, GRATIS !!!








