Creazione "dinamica" di immagini
// 29/02/2004 - Salvatore Meschini
// Un piccolo esperimento: crea un'immagine via codice
// e salvala in un file .JPEG. La classe è stata scritta in una manciata di minuti
// quindi potrebbe contenere dei "bug" (ovviamente non è ottimizzata in nessun
// modo!). Come spendere in modo "utile" la pausa caffè... :-)
// Compilazione: csc /target:winexe nomefile.cs
using System;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
namespace CreaImmagine
{
public class Immagine
{
private Bitmap Img;
public Immagine(string Testo, int dimX, int dimY)
{
Img = new Bitmap(dimX, dimY); // Dimensione dimX x dimY (es.800x600)
int Passo = dimX / 16;
Graphics Contenuto = Graphics.FromImage(Img); // La nostra "tela"
SolidBrush Pennello = new SolidBrush(Color.Gold); // Colore chiaro, gusto...
Font Carattere = new Font("Verdana", dimX / 12, FontStyle.Bold, GraphicsUnit.Pixel);
Rectangle DimSfuma = new Rectangle(0,0,dimX,dimY); // Vedi righe seguenti:
LinearGradientBrush PennelloSfumato = new LinearGradientBrush(DimSfuma ,Color.Fuchsia,Color.Yellow,180);
LinearGradientBrush PennelloSfumato1 = new LinearGradientBrush(DimSfuma ,Color.DarkGreen,Color.White,45);
Contenuto.FillRectangle(PennelloSfumato,DimSfuma); // Sfondo
Pennello.Color = Color.Black; // Colore testo = nero
SizeF DimTesto = Contenuto.MeasureString(Testo, Carattere); // Dimensione testo
// Scrivi il testo
Contenuto.DrawString(Testo, Carattere, Pennello, (dimX-DimTesto.Width)/2, (dimY-DimTesto.Height)/2);
for (int i = 0; i < dimX; i = i + Passo + (dimX-dimY)/Passo) // Disegna rettangoli:
{
Contenuto.FillRectangle(PennelloSfumato1, i, 0, Passo, Passo); // In alto
Contenuto.FillRectangle(PennelloSfumato1, i, dimY - Passo, Passo, Passo); // In basso
}
}
public void SalvaConNome(string Nome)
{
FileStream MioFile = new FileStream(Nome, FileMode.Create, FileAccess.ReadWrite);
Img.Save(MioFile, ImageFormat.Jpeg); // Salva l'immagine su un file
}
}
class Class
{
[STAThread]
static void Main(string[] args)
{
// Crea una nuova immagine
Immagine Img = new Immagine("Ciao da Salvatore!", 800, 600);
Img.SalvaConNome("IoProgrammo.jpg"); // Ora crea il file .jpg
}
}
}
Questo è il risultato dell'esecuzione:

Click here - Clicca qui