Corso di  Visual Basic

Questo articolo spiega gli strumenti che il Visual Basic propone per visualizzare delle immagini grafiche. Nel prossimo numero approfondiremo questa prima parte, per spiegare invece come crearne di nuove.

Corso Visual Basic
La visualizzazione di immagini grafiche
Parte 18

di Andrea T.M. Frosini

Il Visual Basic è un ambiente di sviluppo che offre almeno una soluzione ad ogni tipico problema della programmazione quotidiana. Perciò se avete ricevuto una commessa per lo sviluppo di un semplice programma orientato alla gestione di magazzino, potete accettare perché siete in grado di interagire con una base dati e di eseguire delle stampe di qualità. Quanto vi manca è forse quel "qual cosa in più" rispetto a ciò che i vostri concorrenti sono disposti a promettere. Per esempio la visualizzazione della foto che riguarda il generico articolo gestito dal vostro programma, oppure la visualizzazione di un catalogo elettronico.Ciò che vi occorre è quindi uno strumento adatto per visualizzare immagini. A tale scopo, e’ possibile utilizzare:

  • un Form
  • un controllo chiamato Picture
  • un secondo controllo (simile al precedente) chiamato Image.

Vediamo ora come vare.

Immagini contenute in un Form
Per visualizzare un’immagine in un Form create un nuovo progetto partendo da zero. Posizionatevi quindi sulla finestra principale del progetto (normalmente chiamata Form1), e cercate nella relativa palette delle proprietà la voce Picture. Accanto ad essa trovate un pulsante: premetelo, e vi si aprirà una finestra che vi permette di scegliere il file da visualizzare. Esso deve ovviamente essere di tipo grafico, ossia deve avere un’estensione appartenente al seguente elenco:

BMP, DIB, GIF, JPG, WMF, EMF, ICO, CUR.

Fra gli esempi allegati a questo articolo troverete anche alcune immagini in formato Bitmap, che potete usare per eseguire i vostri esperimenti. Perciò selezionatene una a caso, e confermate la finestra di scelta file su cui vi trovate.
Potete inserire un’immagine anche importandola dalla ClipBoard di Windows, a patto di avercela precedentemente inserita con un editor di disegni. Se così non è allora lanciate, per esempio, il programma Paint e scarabocchiate qualche cosa al suo interno. Selezionato tale immagine ed inviatela in ClipBoard. Poi tornate in VB, e premete il tasto destro del mouse sul Form. Si apre un menù di contesto: scegliete la voce Paste (o Incolla) per copiare in automatico l’immagine dalla ClipBoard… al Form.
La cancellazione di un’immagine dal Form è un’operazione altrettanto semplice: ritornate sulla palette delle proprietà del Form e riposizionatevi sulla voce Picture. Premete poi il tasto "Canc" assicurandovi che la posizione del cursore sia sul primo carattere della stringa che compare in Picture.
Bene, adesso che sapete come inserire e cancellare un’immagine a design time (cioè in fase di creazione), preoccupiamoci di come fare le stesse cose a run time (durante l’esecuzione del programma).

Inserire immagini a Run time
Per visualizzare un’immagine a run time, dobbiamo usare un funzione che fa parte della libreria standard di Visual Basic. Il suo nome è piuttosto facile da ricordare, poiché si chiama LoadPicture. Il suo uso è altrettanto immediato, perché basta eseguire un codice come quello che segue.

Form1.Picture = LoadPicture("ciliegia.bmp")

Per cancellare l’immagine dal Form è sufficiente richiamare la LoadPicture con una stringa vuota:

Form1.Picture = LoadPicture("")

Oppure eseguire un assegnamento a Nothing:

Form1.Picture = Nothing

Un’altra funzione di fondamentale importanza è la SavePicture, tipicamente utile per salvare un’immagine su disco. Il suo uso, almeno nella forma, è del tutto simile a quello approntato per la LoadPicture.

Ma attenzione a non perdere i vostri dati: la SavePicture è distruttiva nei confronti del file su cui la farete operare, perciò per evitare spiacevoli sovrascritture è bene accertarsi che l'utente sia d'accordo. Un esempio di codice utile per chiedere conferme è il seguente:

Dim bSi As Boolean

bSi = True

If Dir("pippo.bmp") <> "" Then

bSi = MsgBox(_

"Sei sicuro?", _

vbYesNo)

End If

If bSi = True Then

SavePicture _

Form1.Picture, _

"pippo.bmp"

End If

Ricordo che la funzione Dir usata, serve proprio per verificare l'esistenza di un file su disco.

Prima di richiamare la SavePicture dovete inoltre essere certi che all’interno del Form vi sia un’immagine da salvare, e questo lo ottenete con il seguente codice:

If Form1.Picture <> 0 Then

. . .

End If

Se non farete così, otterrete dal VB un noioso e poco professionale messaggio di errore.

Per leggere un’immagine da ClipBoard, dovete usare il metodo GetData dell’oggetto Clipboard usando il seguente codice:

Form1.Picture = Clipboard.GetData(vbCFBitmap)

Come avete visto la GetData è molto semplice da usare, perché è sufficiente passare come suo parametro il formato con il quale vogliamo importare l’immagine. I formati disponibili sono pochi, ma sufficienti per coprire la maggior parte delle esigenze:

vbCFBitmap, vbCFMetafile e vbCFDIB.

Ovviamente potrebbe non esserci nulla di interessante in ClipBoard, o per lo meno nulla che assomigli ad un formato grafico (potrebbe ad esempio esserci del semplice testo proveniente da un editor). Perciò prima di richiamare la GetData, potete usare il metodo GetFormat per scoprire se ci sono immagini di pronto utilizzo. Per esempio con il seguente costrutto If, è possibile verificare se in ClipBoard esiste un immagine di tipo Bitmap:

If Clipboard. GetFormat( vbCFBitmap) Then
Form1.Picture = Clipboard.GetData( vbCFBitmap)
End If

Per salvare un’immagine anche in ClipBoard dovete usare il metodo SetData dell’oggetto Clipoard. Ecco come fare:

Clipboard.SetData Form1.Picture, vbCFBitmap

Tutto ciò che sino ad ora avete appreso in via del tutto teorica, lo potete sperimentare dal vivo usando FORM.VBP (reperibile sul sito ftp di Infomedia), che ho preparato utilizzando la versione 6 del Visual Basic.Ma adesso è tempo di occuparci di nuove cose, ossia del controllo Image che ci permette di perimetrare un’immagine…

Il controllo Image
A volte visualizzare un’immagine in un Form è sconveniente, perché non si può controllare né la sua posizione video, né la sua dimensione. Se queste esigenze sono (o saranno) anche le vostre, allora potete usare il controllo Image, appositamente progettato per visualizzare immagini.Image è presente nella palette dei controlli tramite l’icona visibile in Figura 1.Il suo uso è piuttosto semplice: selezionatelo dalla palette, ed inseritelo all’interno di un Form così come fate di solito per ogni altro classico componente Visual Basic.Dopodiché, con esso potrete fare le stesse cose previste per i Form, riciclando quindi lo stesso codice VB. Ovviamente là dove compariva la scritta Form1, ora deve apparire la scritta Image1. È la stessa cosa che ho fatto io per l’esempio IMAGE.VBP (reperibile presso il sito ftp di Infomedia) che è un’opportuna copia del precedente progetto FORM.VBP.La proprietà fondamentale di Image si chiama Stretch. Se essa è impostata al valore True, allora il controllo Image stirerà in lungo e in largo l’immagine, sino a quando essa non coprirà l’intera superficie video perimetrata dal controllo stesso. Perciò la prima immediata conseguenza visuale dell’operazione di Strech, è la trasformazione dei cerchi in ellissi e dei quadrati in rettangoli.
Se invece tale proprietà è impostata al valore False, allora l’immagine si estenderà oltre il perimetro del controllo Image, a partire però dal suo angolo superiore sinistro.

Il controllo Picture
Un’apparente ridondanza del controllo Image è il controllo Picture. Sembrano simili, ma non lo sono affatto.Picture è un controllo abbastanza duttile nelle sue funzionalità, perché dotato di alcuni strumenti necessari per agire sull’immagine in esso visualizzata. Attenzione però: il controllo Picture non è un elaboratore di immagini come ad esempio lo è Paint Shop Pro, ma un semplice editor grafico non interativo che permette di tracciare figure geometriche fondamentali. Quindi segmenti, rettangoli ed archi di curva.La sua icona è visibile in Figura 2, mentre il suo utilizzo lo dettaglierò nel prossimo numero di questo corso di programmazione Visual Basic.Dunque arrivederci al prossima puntata, e nel frattempo (a mo’ di esercizio), provate ad usare da soli il controllo Picture "aiutandovi" con il manuale in linea del VB. Potrete così confrontare i vostri risultati, con le informazioni che leggerete sul prossimo numero di DEV.

Andrea T.M. Frosini lavora presso il laboratorio di Ricerca e Sviluppo della Top Software S.A di S.Marino, per la quale (negli scorsi dieci anni trascorsi all'interno del team del progetto Passepartout http://www.top-soft.com) si è occupato di programmazione di sistema, di porting, dello sviluppo di componenti per librerie di base, di interpreti, di compilatori p-code e di tool di sviluppo multipiattaforma usando il linguaggio C/C++. Da diversi anni collabora stabilmente con la redazione di DEV. Può essere contattato tramite l’account afrosini@infomedia.it.

VB-IT: per tutti gli sviluppatori VB o aspiranti tali
VB-IT è la mailing list italiana interamente dedicata a Visual Basic, VBA (Visual Basic for Application) e VBScript. Se sei uno sviluppatore esperto oppure ti interessa il mondo Visual Basic anche solo per diletto, troverai VB-IT utilissima!
Consigli, suggerimenti, trucchi, soluzioni a problemi comuni e molto altro. Per iscriversi, gratuitamente, a VB-IT è sufficiente inviare un messaggio a majordomo@infomedia.it e nel body inserire la stringa:

 subscribe vb-it

Una volta iscritto, esponi i tuoi problemi a vb-it@infomedia.it e aiuta gli altri a risolvere i propri. Sarà anche un modo per instaurare nuovi rapporti di lavoro, collaborazione ed amicizia!