Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
PRINCIPALE > ARTICOLO

Eseguire una ricerca veloce nell' archivio delle risorse di Visual Basic Italia®: 

Preso dall'archivio...

Premere il pulsante sotto per accedere direttamente ad un articolo o ad un esempio preso in modo casuale dall'archivio.



Ultimo e-book pubblicato:

"INTRODUZIONE AI CSS"

Lo scopo del CSS language è quello di controllare lo stile dei vari elementi che concorrono a formare un
documento HTML.
Si può operare in tre modi collegamento ad un foglio di stile esterno;definizione degli stili all'inizio
del documento utilizzo della proprietà style all'interno di un Tag HTML (embedded style). Questo e-book introduttivo
servirà per apprendere tali nozioni fondametali dei fogli di stile.

Prezzo: € 0.0.
Presentazione:
REAL SOFTWARE RILASCIA LA VERSIONE 5.0 di REALbasic per Windows






Gorizia, 5 maggio 2003 - Active, distributore in esclusiva di REALSoftware, Austin, Tx, annuncia la disponibilità di REALbasic 5.0 per Windows, uno strumento per lo sviluppo semplice da usare che permette agli utenti Windows di tutti i livelli di creare applicazioni personalizzate e di compilarle sia per la piattaforma Windows che per quella Macintosh.
[>>]

http://www.active-software.com

 

Contatti. Utilizzare l'email generica per domande relative al sito:
Porre domande relative al sito
oppure scrivere ad un responsabile di area.
Responsabile del sito: >Andrea Martelli
Responsabile area "Corso di VB":
> Giorgio Abraini

Recuperare le dimensioni di un'immagine negli Appunti

Questa lezione, consultata da 3972 utenti, è stata giudicata di ottimi contenuti , con un'esposizione perfettamente comprensibile e con un livello di approfondimento ottimo da 51 votanti.


Recuperare le dimensioni di un'immagine negli Appunti

Alcune applicazioni di fotoritocco come Adobe Photoshop permettono di creare nuove immagini impostandone automaticamente le dimensioni in base all'immagine presente negli Appunti.
Come riprodurre tale risultato visto che in Visual Basic non è ancora stato progettato niente di simile?
Il primo passo da compiere consiste nel determinare il formato del contenuto degli Appunti.
Se infatti prima di utilizzare l'applicazione abbiamo copiato un testo, è impossibile determinare le dimensioni della nuova immagine in base alle dimensioni di tale testo.
A questo scopo si dovrà quindi fare uso del metodo GetFormat. Le costanti dei formati sono diverse a seconda del tipo di dato contenuto negli Appunti:


vbCFLink ( = &HBF00)
informazioni relative a una conversazione DDE
vbCFText ( = 1)
testo
vbCFBitmap ( = 2)
bitmap
vbCFMetafile ( = 3)
file .wmf (i metafile sono file in cui un'immagine viene memorizzata come insieme di oggetti grafici ad esempio linee, cerchi e poligoni, anziché pixel in modo da ottenere maggiore precisione di riproduzione dell'immagine rispetto a quella ottenuta con le immagini composte da pixel. Esistono due tipi di metafile: standard di estensione .wmf, ed enhanced di estensione .emf.)
vbCFDIB ( = 8)
bitmap indipendente dalla periferica (DIB)
vbCFPalette ( = 9)
tavolozza di colori

La sintassi del metodo GetFiormat è la seguente:

Clipboard.GetFormat(formato)

dove formato indica uno delle costanti elencate poco sopra. Siccome il parametro è obbligatorio ossia non si può indicare:

Clipboard.GetFormat

si può andare a tentativi. L'unica costante di formato che interessa all'applicazione in sviluppo è vbCFBitmap: indicandola all'interno del metodo GetFormat si otterrà True se negli Appunti è contenuta un'immagine e False in tutti gli altri casi:

MsgBox Clipboard.GetFormat(vbCFBitmap)

Quindi il primo blocco dell'applicazione potrebbe essere il seguente:

Private Sub Form_Load()
If Clipboard.GetFormat(vbCFBitmap) = True Then
'...
'...
'...

Else
MsgBox "Formato non supportato"
Exit Sub
End If
End Sub

Un altro modo per ottenere lo stesso risultato è con l'ausilio della funzione IsClipboardFormatAvailable che consente di verificare il supporto di un maggior numero di formati (vedere l'Indice per la lista dei formati) ma che, essendo un API, è soggetta agli inconvenienti della sua categoria (vedere sempre l'Indice).
La sua sintassi è la seguente:

Declare Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As Long)_ As Long

dove wFormat è una costante di formato. La funzione ritorna 0 nel caso in cui la costante indicata non rappresenti lo stesso formato dei dati contenuti negli Appunti ed 1 in caso di successo. Perciò il codice visto poco sopra trova l'equivalente in quello mostrato qui sotto:

Private Declare Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat _ As Long) As Long
Private Const CF_BITMAP = 2


Private Sub Form_Load()
If IsClipboardFormatAvailable(CF_BITMAP) = 1 Then
'...
'...
'...

Else
MsgBox "Formato non supportato"
Exit Sub
End If
End Sub

La scelta tra le due strade è naturalmente lasciata ad ognuno. In questo articolo però si utilizzerà la prima.
Il punto centrale della discussione sta nella creazione di un oggetto che chiameremo Immagine e che rappresenterà l'immagine virtuale contenuta negli Appunti. Virtuale in quanto non essendo visibile ne rappresenta soltanto un richiamo.
Dunque nelle dichiarazioni generali:

Dim Immagine As Object

Adesso il lavoro è praticamente concluso. Quello che rimane è associare il contenuto degli Appunti all'oggetto Immagine:

Set Immagine = Clipboard.GetData(vbCFBitmap)

Notare che la linea di codice sopra utilizza la costante vbCFBitmap ma è equivalente ad utilizzare CF_BITMAP. vbCFBitmap è però una funzione interna al linguaggio mentre CF_BITMAP non lo è e quindi dovrà essere richiamata nelle dichiarazioni generali.
D'ora in poi si potrà gestire l'oggetto Immagine proprio come un oggetto Image vero e proprio. Eccone la riprova:

MsgBox Immagine.Width & " - " & Immagine.Height

Ora inserire un controllo PictureBox sul piano ed assegnargli l'unità di misura Centimeters:

Picture1.ScaleMode = 7

Ripetere la stessa operazione per la Form:

Form1.ScaleMode = 7

Per far notare che si tratta di un'immagine nuova si può colorare di bianco il controllo PictureBox:

Picture1.BackColor = vbWhite

E finalmente si può adottare la PictureBox in base alle dimensioni dell'immagine negli Appunti:

Picture1.Width = Immagine.Width/1000
Picture1.Height = Immagine.Height/1000

La divisione per 1000 riporta la misurazione ai centimetri. Nel caso di immagini molto piccole, dell'ordine dei 2-3 centimetri ci possono essere delle variazioni tra la dimensione dell'immagine originale e quella della PictureBox. In quel caso sarà sufficiente adottare delle piccole modifiche all'operazione di divisione.

Se a questo punto si vorrà inserire l'immagine nella PictureBox basterà includere nel piano un controllo CommandButton ed utilizzare il blocco di codice che segue:

Private Sub Command1_Click()
Picture1.Picture = Clipboard.GetData(vbCFBitmap)
End Sub

Il risultato è quello che segue:

per creare quest'immagine è stato eseguita la cattura dell'intera schermata che, essendo molto più estesa della form del progetto, risulta non completamente visibile.
Si riporta di seguito il codice relativo al progetto completo:

Dim Immagine As Object
Private Const CF_BITMAP = 2

Private Sub Command1_Click()
Picture1.Picture = Clipboard.GetData(CF_BITMAP)
End Sub

Private Sub Form_Load()
If Clipboard.GetFormat(CF_BITMAP) = True Then
Picture1.ScaleMode = 7
Form1.ScaleMode = 7
Picture1.BackColor = vbWhite
Set Immagine = Clipboard.GetData(CF_BITMAP)
Picture1.Height = Immagine.Height / 1000
Picture1.Width = Immagine.Width / 1000
Else
MsgBox "Formato non supportato"
Exit Sub
End If
End Sub