Traccia per IL codice della classe Assi



Scaricare 14.55 Kb.
14.11.2018
Dimensione del file14.55 Kb.

Traccia per il codice della classe Assi

Supponiamo che si desideri un pannello di default che mostri gli assi CENTRATI ed evidenzi una griglia da –5 a 5 per le X e da –5 a 5 per le Y come il seguente:



La classe Assi:
import javax.swing.*;

import java.awt.*;

public class Assi extends JFrame {

private Image IM=null; // immagine fuori schermo su cui disegnare

private Graphics k; // Oggetto "astratto" sul quale si disegna è associato alla immagine IM

private static int L=300,H=300; // dimensione pannallo grafico di default

private static int xmin=-5,ymin=-5, xmax=5, ymax=5; // estremi assi cartesiani di deafault

private static int Ux=L/(xmax-xmin), Uy=H/(ymax-ymin); // Ux, Uy = numero di pixel per unità cartesiana

private int xc=Math.abs(xmin)*Ux, yc=Math.abs(ymax)*Uy; // xc,yc = coordinate centro in pixel
// COSTRUTTORE

public Assi(int larg, int alt, int mix, int max, int miy, int may) {

L=larg; H=alt; xmin=mix; xmax=max; ymin=miy; ymax=may;

Ux=L/(xmax-xmin); Uy=H/(ymax-ymin);

xc=Math.abs(xmin)*Ux; yc=Math.abs(ymax)*Uy;

setGui();

setEvent();

}
// COSTRUTTORE di DEFAULT

public Assi() {

setGui();

setEvent();

}
private void setGui() {

setBounds(0,0,L,H);

setVisible(true);

setResizable(false);

dis_assi();

}
private void setEvent() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}
private void dis_assi() {

IM=createImage(L,H); // cattura dal Component (this) i pixel e li copia in IM (immagine fuori schermo)

k=IM.getGraphics(); // costruisce un oggetto "astratto" graphics associato a IM sul quale tracciare segmenti

// Disegno assi
disegna_seg(Color.BLACK,k,xmin,0,xmax,0); // asse x

disegna_seg(Color.BLACK,k,0,ymin,0,ymax); // asse y

// disegno griglia

for (int i=xmin; i

if (i!=0) disegna_seg(Color.GREEN, k,i,ymin,i,ymax); // segm. di griglia delle unita X

for (int j=ymin; j

if (j!=0) disegna_seg(Color.GREEN,k,xmin,j,xmax,j); // segm. di griglia delle unita X

repaint(); // Ridisegna gli assi (la IM) chiamando paint()

}

// FINE COSTRUTTORE



public void paint(Graphics g) {

Graphics2D g2=(Graphics2D) g;

if (IM!=null) g2.drawImage(IM,0,0,this); //all'avvio IM=null non disegna

}
// METODO Publico DISEGNA



public void disegna(Figura F, Color C) {

Color HC=k.getColor();

k.setColor(C);

Matrice f=F.get(); // mi serve la matrice (3,n) della figura

double Xcart[]=(f.get())[0]; //serve la riga 0 dell'array (3,n) della figura

double Ycart[]=(f.get())[1]; //serve la riga 1 dell'array (3,n) della figura

int N=f.getCol(); //N numero di punti

int x[]=new int[N]; // x[], y[] array necessari per disegnare

int y[]=new int[N]; // con il metodo drawPolyline() o drawPolygon()

for (int i=0; i

x[i]=trX(Xcart[i]); // trasformazione pixel

y[i]=trY(Ycart[i]);

}

k.drawPolygon(x,y,N); // disegno del poligono chiuso drawPoligon() poligonale aperta drawPolyline()

repaint();

k.setColor(HC);

}
private void disegna_seg( Color c, Graphics g, double x1, double y1, double x2, double y2) {

g.setColor(c);

g.drawLine(trX(x1),trY(y1),trX(x2),trY(y2));

}
private int trX(double x) {

int Xp=(int) Math.round(xc+x*Ux);

return Xp;

}
private int trY( double y) {

int Yp=(int) Math.round(yc-y*Uy);

return Yp;



}

}




©astratto.info 2017
invia messaggio

    Pagina principale