View Single Post
Old 25-07-2009, 17:03   #1
:.Blizzard.:
Senior Member
 
L'Avatar di :.Blizzard.:
 
Iscritto dal: Jan 2006
Città: Perugia - San Benedetto del Tronto
Messaggi: 348
[Java] Problemi con il fillRect

Allora ragazzi, salve a tutti. Ho un problema da cui non riesco a venirne fuori (è più di un'ora che ci stò ragionando ).

Stò facendo un programma in Java che gestisce il database di una fittizia casa edistrice. Ho deciso di fare in modo che l'utente possa visualizzare l'istogramma delle vendite dei numeri di una collana. Così ho scritto un codice per disegnare questo istogramma:

Codice:
public void paintComponent(Graphics g) {
        super.paintComponent(g);
        int max = findMax(this.venduti);

     
        g.setColor(new java.awt.Color(160, 175, 219));
        for (int i = 0; i < dim; i++) {
            g.fillRect(30 + i * 50, 25, 30, Math.round((250 * (Integer) venduti[i][1]) / max));
}
Nota: l'array bidimensionale che vedete contiene il numero i-esimo della collana e al suo fianco il numero di prodotti venduti di tale numero.

Il problema è che il fillRect mi considera il conteggio dei pixel a partire da in alto a sx anzichè dal basso a sx. Ecco quindi cosa ne viene fuori:



Ovvero l'istogramma esce fuori ribaltato.

Considerate che il JPanel ha altezza 300 pixel.
Ho deciso di usare sia un margine alto che un margine basso ciascuno di 25 pixel. Ecco perchè nella proporzione ho assegnato al libro di collana con maggior numero di vendite un rettangolo di altezza 250.


Il metodo fillRect è il seguente:

fillRect(int x, int y, int width, int height)

Ovvero disegna un rettangolo il cui angolo in alto a sinistra è nelle coordinate x,y; il rettangolo è largo WIDTH ed è alto HEIGHT (quindi niente altezze negative).

Potete darmi una mano?
:.Blizzard.: è offline   Rispondi citando il messaggio o parte di esso