Creare miniature di immagini in C#
Pagina 2 di 2
Nellevento click del button Genera invece inseriamo il codice che materialmente genera la miniatura dellimmagine presente del percorso selezionato
//Dichiariamo una variabile a livello di classe
Image imgThumb = null;
private void generaBtn_Click(object sender, EventArgs e)
{
try
{
Image image = null;
//Controlliamo se la textbox contiene un percorso
if (fileTb.Text != String.Empty)
image = Image.FromFile(fileTb.Text);
//Controlliamo se l'immagine esiste
if (image != null)
{
imgThumb = image.GetThumbnailImage(100, 100, null, new IntPtr());
this.Refresh();
}
}
catch
{
MessageBox.Show("Si è verificato un errore");
}
}
Questo codice, utilizzando il metodo Image.GetThumbnailImage(), crea un oggetto Image di dimensione 100x100. Il metodo richiede come parametri in ordine: la largehezza in pixel della miniatura, laltezza in pixel della miniatura, un delegato di tipo Image.GetThumbnailImageAbort per interrompere prematuramente loperazione (si può passare il valore NULL come ho fatto io se non si vuole gestire questo aspetto) ed infine un oggetto di tipo IntPtr per rappresentare un puntatore.
Il passo finale è quello di generare levento Paint() del form (che si verifica in seguito alla chiamata al metodo Refresh() presente nellevento click del button Genera) ed inserire al suo interno il codice che determina la visualizzazione della minitura nel nostro form (tramite il metodo Graphics.DrawImage)
private void Form1_Paint(object sender, PaintEventArgs e)
{
if (imgThumb != null)
e.Graphics.DrawImage(imgThumb, 30, 20, imgThumb.Width, imgThumb.Height);
}
A questo punto possiamo avviare lapplicazione, selezioniamo unimmagine cliccando su Apri e poi clicchiamo su Genera. Il risultato dovrebbe essere simile al seguente







