Sincronizza Indice |
Scarica il progetto |
Testo dell'articolo |
Stampa l'articolo |
Attraverso la finestra di dialogo Proprietà dello schermo è possibile modificare lo sfondo del Desktop di Windows. Abbiamo visto in un altro HowTo come effettuare questa modifica tramite Visual Basic. Vedremo invece in questo articolo come simulare sulla superficie di un form l'effetto "Affianca" di quella finestra di dialogo, effetto che prende il nome di Tiling (dall'inglese Tile, pavimentare).
Il nostro progetto si comporrà di un solo form, un Frame e 4 controlli Image con le immagini mostrate qui sotto e liberamente scaricabili cliccando sopra una di esse.
Il controllo Frame, di nome fraTiles, servirà per contenere le quattro immagini poste in una matrice di controlli, di nome imgTile e con indice da 0 a 3. Il funzionamento del progetto è semplicissimo: l'utente dovrà
cliccare sopra una delle 4 immagini per vedere il motivo riprodotto su
tutta la superficie del form. Il codice si compone di una sola routine, posta ad intercettare il click sopra una delle quattro immagini:
Qualunque sia l'immagine cliccata, sarà comunque generato l'eventoClick dell'oggetto imgTile. Sarà fornito l'indice del controllo cliccato. La routine utilizza due variabili di nome sngX e sngY per calcolare la posizione di ogni tessera della superficie da ricoprrire ed una costante di nome sngDistanza che consentirà di distanziare ogni tessera dalla successiva, al fine di evitare un effetto grafico sgradevole che può essere comunque riprodotto ponendo la costante a 0. La riga 8 cancella ogni modifica grafica apportata in precedenza alla superficie, lasciando qundi solo i controlli del form. La riga 9 rende le modifiche grafiche alla superficie del form persistenti perché altrimenti se una finestra venisse sovrapposta al nostro form, il motivo grafico sarebbe cancellato. L'istruzione alla riga 10 rende predefinito l'oggetto imgTitle con indice uguale ad Index ovvero l'immagine che è stata selezionata dall'utente. È stata utilizzata soltanto per abbreviare il codice e semplificarne la scrittura.
Seguono due cicli iterativi, uno per l'asse X e l'altro per l'asse Y. Essi si occuperanno di ricopiare l'immagine selezionata ad intervalli regolari su tutta la superficie del form. Entrambi i cicli iniziano da 0 e continuano fino al raggiungimento della dimensione (larghezza e altezza) del form, ad incrementi pari alla dimensione dell'immagine selezionata più la distanza tra un'immagine e l'altra. Questo assicura che un'immagine non venga sovrascritta da un'altra e distanza le immagini tra loro. Così il form viene scomposto in varie sezioni, ognuna delle quali viene riempita con l'immagine selezionata. La copia grafica dell'immagine è eseguita alla riga 13 tramite il metodo PaintPicture del form fornendogli semplicemente l'immagine da copiare e le coordinate in cui essa dovrà essere copiata. L'esecuzione del progetto dimostra subito la semplicità d'utilizzo. Ogni volta che l'utente clicca sopra una delle quattro immagini viene riprodotto il motivo affiancando tale immagine.
|
Lo sviluppo del progetto si rivela davvero molto semplice e senza rischi per l'integrità del progetto. È tuttavia presente una pesante limitazione: le immagini da riprodurre hanno sempre e comunque un colore di sfondo, nel nostro caso il fucsia. Non è possibile quindi ricopiare delle immagini trasparenti, senza sfondo. Quasi sempre il colore di sfondo della superficie del form è il
grigio di sistema, e quindi ci si potrebbe aspettare che riproducendo
un'immagine con lo sfondo grigio si ottenga un effetto di trasparenza,
ma non è sempre così! Fibia
FBI
|
Torna all'indice degli HowTo |