disegniIterativi

ripetere più volte il disegno di una forma

Utilizzando il cicli e i canvas si possono creare alcuni disegni in maniera automatica.

Griglia

Come primo esercizio proviamo a costruire una griglia come quella della figura sottostante. L'utente inserisce lo spazio che deve intercorrere tra due righe orizzontali e quello che deve intercorrere tra due righe verticali e poi preme il pulsante disegna.

Programma che disegna una griglia

Nel metodo start() inseriamo semplicemente gli elementi nell'interfaccia, tutto il lavoro viene svolto in disegnaReticolo() dove vengono letti i parametri e in due cicli separati si disegnano prima le linee verticali e poi quelle orizzontali.

public class Reticolato extends Application{

	public static void main(String x[]){
		launch(x);
	}
	
	TextField dx = new TextField();
	TextField dy = new TextField();
	Canvas tela = new Canvas(400,400);
	
	@Override
	public void start(Stage primaryStage){
		GridPane griglia = new GridPane();
		Label e_dx = new Label("dx:");
		Label e_dy = new Label("dy:");
		Button disegna = new Button("disegna");
		griglia.add(tela,0,0,5,1);
		griglia.add(e_dx, 0, 1);
		griglia.add(dx, 1, 1);
		griglia.add(e_dy, 2, 1);
		griglia.add(dy, 3, 1);
		griglia.add(disegna, 4, 1);
		
		Scene s = new Scene(griglia);
		primaryStage.setScene(s);
		primaryStage.setTitle("reticolato");
		primaryStage.show();
		
		disegna.setOnAction(e->disegnaReticolo());
	}

	private void disegnaReticolo(){
		GraphicsContext gc = tela.getGraphicsContext2D();
		int distanzaX = Integer.parseInt(dx.getText());
		int distanzaY = Integer.parseInt(dy.getText());
		int x,y;
		
		for(x=0;x<400;x=x+distanzaX){
			gc.strokeLine(x, 0, x, 400);
		}
		for(y=0;y<400;y=y+distanzaY){
			gc.strokeLine(0, y, 400, y);
		}
	}
}

Scrivi un programma che realizza un disegno come quello in figura (deve disegnarlo quando si avvia, non servono pulsanti né altro, basta soltanto un Canvas).

esercizio ragnatela

Scrivi un programma che realizza un disegno come quello in figura, il disegno dei quadratini (sono 20 in orizzontale e 20 in verticale) deve comparire alla pressione del pulsante.

esercizio quadrati

L'esercizio precedente potrebbe essere modificato per far sì che i quadrati abbiano due colori diversi ricordandosi un paio di cose:

esercizio quadrati colorati

[non facile] Modifichiamo di nuovo l'esercizio precedente: questa volta ancora più colori (al massimo 10) e i quadratini (sempre 10 in orizzontale e 10 in verticale) di dimensione variabile. La dimensione del quadratino comprende lo spazio bianco tra l'uno e l'altro che è di 1 pixel, quindi se ad esempio scrivo 20 come dimensione il quadrato dovrà avere lato 19.

Potrebbe far comodo tener presente che:

esercizio quadrati multicolore