Creare un'immagine "al volo"

Autore Gianni Marzaloni
Voto degli utenti (su 9 votanti)

Usare le classi del namespace System.Drawing per creare una immagine impostando il disegno direttamente dal codice.

<%@ Page Language="VB" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Drawing" %>
<%@ Import Namespace="System.Drawing.Imaging" %>
<%@ Import Namespace="System.Drawing.Drawing2D" %>
<script runat="server">

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)

'Inizializzo lo stream in memoria
Dim MemStream As New MemoryStream()

'Creo una nuova bitmap
Dim bitmap As New System.Drawing.Bitmap(200, 50, PixelFormat.Format32bppArgb)
Dim graphic As Graphics = Graphics.FromImage(bitmap)

Dim penna As New Pen(Color.FromArgb(0, 74, 115), 15)
Dim pennello As SolidBrush = New SolidBrush(Color.FromArgb(0, 74, 115))

'Pulisco l'immagine e aggiungo l'antialias (anche per il testo)
graphic.Clear(Color.FromArgb(167, 187, 215, 255))
graphic.SmoothingMode = SmoothingMode.AntiAlias
graphic.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias

'Disegno l'immagine
'graphic.DrawLine(penna, 7, 80, 110, 80)
graphic.DrawString("freeASP.it", New Font("verdana", 24, FontStyle.Bold), pennello, New PointF(2, 3))
graphic.DrawString("Risorse per sviluppatori", New Font("verdana", 8, FontStyle.Bold), pennello, New PointF(10, 35))

Response.ContentType = "image/png"

'Salvo nello stream l'immagine e poi la invio in output
bitmap.Save(MemStream, ImageFormat.Png)
MemStream.WriteTo(Response.OutputStream)

bitmap.Dispose()

End Sub

</script>