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!
|
|