PDA

View Full Version : [JAVA] Help disegnare poligono scritta e smile colorati


IspiCiosa
16-03-2008, 17:12
cliccate qui (http://www.dsi.unive.it/~mp/Homeworks/01.pdf)

ragazzi devo fare il secondo esercizio...

quello dello smile...

aiutatemi
ora io sono riuscito a disegnare lo smile ma non capisco come fare per colorarlo e per fare il poligono con la scritta...
come cavolo si fa??

questo è il codice che ho fatto fin ora:
main:


package javaapplication2;

import javax.swing.JFrame;
import javax.swing.*;
import java.awt.*;

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Graphics;
import java.awt.Color;


public class Main {


public static void main(String[] args) {


JFrame finestra = new JFrame();
Tela pannello = new Tela();


finestra.add(pannello);
finestra.setSize(600,300);
finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

finestra.setVisible(true);


}
}



classe 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) {

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

}


/** stabilisce la posizione dello smile
* @param xp coordinata x
* @param yp coordinata y
*/
public void setPos (double xp, double yp) { xs=xp; ys=yp; }


/**dimensione dello smile
* @param dim dimensione della faccina
*/
public void setGrandezza (double dimensione) { dims=dimensione; }


/** Restituisce la dimensione dello smile
* @return dim grandezza dell'oggetto in pixel
*/

public double getGrandezza () { return dims;}


}


classe tela:



package javaapplication2;


import java.awt.Graphics;
import javax.swing.JPanel;
import java.awt.*;

public class Tela extends JPanel
{


Smile Damiano;


public Tela() { Damiano=new Smile();

}


public void paintComponent(Graphics g)
{
super.paintComponent(g);
int x=getWidth();
int y=getHeight();
Damiano.draw(x,y,g);


}
}



come mi devo comportare ora per fare il resto??

IspiCiosa
17-03-2008, 18:01
up

IspiCiosa
18-03-2008, 21:34
up

andbin
19-03-2008, 09:13
Non so se devi fare le classi esattamente in quel modo ma io personalmente farei 1 sola classe che estende JPanel e che si occupa di realizzare l'intero disegno. Poi a quel punto basta solo usare le API di Java 2D per visualizzare linee, cerchi, testo, ecc....

Domanda: il disegno deve essere di dimensione prefissata o deve potersi ridimensionare in base alla dimensione del contenitore??