Una rating bar con GDI+

di Daniele Bochicchio, in ASP.NET, GDI+, System.Drawing,

Lo script di oggi sfrutta GDI+ per creare una semplice rating bar, ovvero un'immagine che permetta di visualizzare il voto associato ad un articolo, ad esempio.
La tecnica utilizza è molto semplice e sfrutta la classe Graphics per creare due rettangoli che serviranno da riempimento, uno rosso per il voto ed uno nero per lo sfondo.
In questo esempio i voti sono in base 100, ma con piccoli accorgimenti è possibile variare questa impostazione.

<%@Import namespace="System.Drawing"%>
<%@Import namespace="System.Drawing.Imaging"%>
<SCRIPT RUNAT="SERVER" LANGUAGE="C#">

private void Page_Load(object sender, System.EventArgs e)
{
  writeBar(Convert.ToInt32(Request["vote"]));
}

private void writeBar(int vote)
{
  // dimensioni dell'immagine
  int width = 100;
  int height = 18;

  // creo una nuova immagine
  Bitmap bitmap = new Bitmap(width, height);

  // oggetto graphics, necessario per manipolare il file
  Graphics graphics = Graphics.FromImage(bitmap);

  // colori di riempimento
  SolidBrush redBrush = new SolidBrush(ColorTranslator.FromHtml("red"));
  SolidBrush blackBrush = new SolidBrush(ColorTranslator.FromHtml("black"));

  // disegno il voto
  graphics.FillRectangle(redBrush, 0, 0, vote, height);

  // disegno il riempimento
  graphics.FillRectangle(blackBrush, vote, 0, width, height);

  // Dispose degli oggetti
  graphics.Dispose();
  redBrush.Dispose();
  blackBrush.Dispose();
      
  // cambio di content type
  Response.Clear();
  Response.ContentType = "image/gif";

  bitmap.Save(Response.OutputStream, ImageFormat.Gif);

  Response.End();
}

</SCRIPT>

Per visualizzare l'immagine, sulla pagina va inserito qualcosa come:

<img src="rating.aspx?vote=75" />

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata

I più letti di oggi