sabato 2 ottobre 2010

Compact Framework utilizzo camera per foto e Video (VB.Net e C#)

Si riporta l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_compact-framework-la-gestione-delle-foto_972.aspx


Introduzione
Dalla versione di Windows mobile 5, posiamo utilizzare tramite le classi opportune, la fotocamera del dispositivo mobile per effettuare delle foto o delle riprese.
In questo articolo, vedremo alcuen tecniche di come utilizzare la camera del dispositivo mobile.
Si crea un nuovo progetto di tipo device, tramite il compact framework 3.5, inseriamo nel progetto due pulsanti, il primo permette di eseguire il codice per effettuare le foto, il secondo per effettuare delle riprese.


Stesura del codice.
Prima di passare in visualizzazione codice, inseriameno nel nostro progetto, un riferimento alla dll Microsoft.Windows.Form, che aggiungiamo tra i riferimenti.


Qui di seguito si riporta il codice per VB.Net e C# di tali dichiarazioni.


VB.Net
Imports Microsoft.WindowsForm.Forms


C#
Using Microsoft.WindowsForm.Forms


Terminata questa parte, nell'evento click di un pulsante, scriviamo il codice per eseguire la classe CameraCaptureDialog, che permette di gestire la fotocamera del dispositivo.


Questa classe, contiene un metodo chiamato ShoDialog che restituisce un enumerazione di vari risultati, come per esempio l'annullamento, la conferma ed altro ancora.
Questo metodo permette di avviare la fotocamera.
Qui di seguito si riporta il codice per entrambi i linguaggi del suo utilizzo per effettuare delle foto.


VB.Net



Dim CameraFoto As New CameraCaptureDialog()



CameraFoto.Owner = Me


'imposto il titolo


CameraFoto.Title = "Mio titolo"


'imposto la cartella documenti


CameraFoto.InitialDirectory = "\My Documents"


'nome file


CameraFoto.DefaultFileName = "\MiaFoto.jpg"


'risoluzione


CameraFoto.Resolution = New Size(100, 100)


'Avvio la foto


If CameraFoto.ShowDialog = Windows.Forms.DialogResult.OK Then


MessageBox.Show(CameraFoto.FileName)


End If




C#


CameraCaptureDialog CameraFoto = new CameraCaptureDialog();


CameraFoto.Owner = this;


//imposto il titolo


CameraFoto.Title = "Mio titolo";


//imposto la cartella documenti


CameraFoto.InitialDirectory = @"\My Documents";


//nome file


CameraFoto.DefaultFileName = @"\MiaFoto.jpg";


//risoluzione


CameraFoto.Resolution = new Size(100, 100);


//Avvio la foto


if (CameraFoto.ShowDialog() == DialogResult.OK)


MessageBox.Show(CameraFoto.FileName);


Come si vede dal codice appena illustrato, si è creato un oggetto di tipo CameraCaptureDialog, la proprietà Owner è stata impostata con il nome della classe madre, mentre le altre proprietà, permettono rispettivamente di impostare il titolo della finestra che viene aperta, il percorso dove salvare l'immagine, il nome, la risoluzione.

La stessa classe, ci permette anche di gestire i video, impostando determinate proprietà.
Qui di seguito, si riporta un frammento di codice per entrambi i linguaggi di programmazione.


VB.Net


'video



Dim CameraVideo As New CameraCaptureDialog()



CameraVideo.Owner = Me


'imposto il path di salvataggio


CameraVideo.InitialDirectory = "\My Documents"


'imposto il file video


CameraVideo.DefaultFileName = "\MioVideo.3gp"


'imposto il titolo


CameraVideo.Title = "Mio Titolo"


'imposto il tipo


CameraVideo.VideoTypes = CameraCaptureVideoTypes.Messaging


'imposto la risoluzione


CameraVideo.Resolution = New Size(176, 144)


'il tempo di video (30 secondi)


CameraVideo.VideoTimeLimit = New TimeSpan(0, 0, 30)


'la modalità


CameraVideo.Mode = CameraCaptureMode.VideoWithAudio


If CameraVideo.ShowDialog = Windows.Forms.DialogResult.OK Then


MessageBox.Show(CameraVideo.FileName)


End If




Catch ex As Exception


MessageBox.Show(ex.Message)


End Try



C#


CameraCaptureDialog CameraVideo = new CameraCaptureDialog();



CameraVideo.Owner = this;


//imposto il path di salvataggio


CameraVideo.InitialDirectory = @"\My Documents";


//imposto il file video


CameraVideo.DefaultFileName = @"\MioVideo.3gp";


//imposto il titolo


CameraVideo.Title = "Mio Titolo";


//imposto il tipo


CameraVideo.VideoTypes = CameraCaptureVideoTypes.Messaging;


//imposto la risoluzione


CameraVideo.Resolution = new Size(176, 144);


//il tempo di video (30 secondi)


CameraVideo.VideoTimeLimit = new TimeSpan(0, 0, 30);


//la modalità


CameraVideo.Mode = CameraCaptureMode.VideoWithAudio;


if (CameraVideo.ShowDialog() == DialogResult.OK )


{


MessageBox.Show(CameraVideo.FileName);


}




l'uso di alcune proprietà è uguale al codice visto in precedenza, solo che impostando la proprietà videotype e VideotimeLimit, e mode, verrà utilizzata la funzione ripresa.
Con Mode, viene impostato il tipo di ripresa con audio, mentre la proprietà videotimelimit, limita il tempo di dura, nel nostro caso 30 secondi.



Conclusioni
Si è visto, come la programmazione in Windows Mobile 5 e 6 è notevolemnte semplificata per uso di alcuni componenti di cui è dotato il dispositivo, come la videocamera.

Nessun commento: