• Come un abito cucito su misura, i nostri progetti software uniscono le potenzialità di tecnologie innovative alle specifiche esigenze del cliente.

    Showcase progetti
  • Analizziamo e razionalizziamo con il cliente i processi e le attività della propria azienda, per poi seguirlo nella scelta delle giuste strategie IT da adottare.

    Le nostre competenze
  • Crediamo nelle potenzialità di un percorso formativo che unisca forti basi teoriche e metodologiche ad una continua applicazione pratica di quanto si apprende.

    Dettaglio dei corsi
  • Progettiamo e sviluppiamo sistemi e progetti basati su dispositivi mobile consumer (iPhone, Windows Phone 7 Series), industriali (Windows CE) e custom (basati su microcontrollori 8/16/32 bit).

    Approfondimenti
 

Creare immagini in c#

February 20, 2009 16:57 by F.Villi

Ecco un esempio di codice che renderizza una immagine PNG. Utile, ad esempio, quando si vuole pubblicare l'indirizzo email nel proprio sito senza che questo venga indicizzato dai motori di ricerca o ancor peggio catturato dagli spider degli spammer.

   1: <%@ WebHandler Language="C#" Class="Handler" %>
   2:  
   3: using System;
   4: using System.Web;
   5: using System.Drawing;
   6: using System.Drawing.Drawing2D;
   7: using System.Drawing.Imaging;
   8: using System.IO;
   9:  
  10:  
  11: public class Handler : IHttpHandler
  12: {
  13:  
  14:     public bool IsReusable { get { return false; }  }
  15:     
  16:     public void ProcessRequest (HttpContext context) 
  17:     {
  18:         Bitmap bmp;
  19:         Graphics g;
  20:         
  21:         try
  22:         {
  23:             int w = Convert.ToInt32(context.Request.QueryString["width"]);
  24:             int h = Convert.ToInt32(context.Request.QueryString["height"]);
  25:             string t = context.Request.QueryString["text"];
  26:             string f = context.Request.QueryString["font"];
  27:             int s = Convert.ToInt32(context.Request.QueryString["size"]);
  28:             Color c = Color.FromName(context.Request.QueryString["color"]);
  29:  
  30:             bmp = new Bitmap(w, h, PixelFormat.Format32bppArgb);
  31:             g = Graphics.FromImage(bmp);
  32:  
  33:             g.Clear(Color.Transparent);
  34:             g.DrawString(
  35:                 t.Replace("_", "")
  36:                 ,new Font(f, s, FontStyle.Bold)
  37:                 ,new SolidBrush(c), 0, 0);
  38:         }
  39:         catch
  40:         {
  41:             bmp = new Bitmap(40, 18, PixelFormat.Format32bppArgb);
  42:             g = Graphics.FromImage(bmp);
  43:             g.Clear(Color.Yellow);
  44:             
  45:             g.DrawString(
  46:                 "error"
  47:                 ,new Font("Tahoma", 10, FontStyle.Bold)
  48:                 ,new SolidBrush(Color.Red), 0, 0);
  49:         }
  50:  
  51:         MemoryStream oStream = new MemoryStream();
  52:         bmp.Save(oStream, ImageFormat.Png);
  53:  
  54:         context.Response.ClearContent();
  55:         context.Response.ContentType = "image/png";
  56:         context.Response.BinaryWrite(oStream.ToArray());
  57:         context.Response.End();
  58:  
  59:         bmp.Dispose();
  60:         g.Dispose();
  61:     }
  62: }

Inserita questa pagina ashx nel progetto verrà utilizzata in questo modo:

<img src="/pagina.ashx?text=012.3456789&width=160&height=19&size=12&color=black&font=courier" />

La classe Graphics incorpora primitive grafiche (ad esempio DrawLine oppure DrawPie) con le quali non sarà difficile realizzare grafici o disegni utilizzando un approccio vettoriale.


Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5