const int width = 200, height = 200;
Bitmap bitmap = new Bitmap(width, height);
Graphics graphics = Graphics.FromImage(bitmap);
//Disegna un rettangolo delle dimensioni dell'immagine riempendolo di bianco
graphics.FillRectangle(new SolidBrush(Color.White), 0, 0, width, height);
//Istanzia la connessione al db
using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=" + Request.PhysicalApplicationPath + "/mdb-database/miodb.mdb;Persist Security Info=False")){
//Istanzia gli oggetti per eseguire la query
conn.Open();
OleDbCommand cm = new OleDbCommand("SELECT COUNT(total_visite) AS tot1 From page GROUP BY total_visite", conn);
float totale = Convert.ToInt32(cm.ExecuteScalar());
cm.CommandText = "SELECT pagina, COUNT(referrer) AS tot From page GROUP BY pagina";
OleDbDataReader rd = cm.ExecuteReader();
float AngoloIniziale = 0;
//Per ogni record calcola l'angolo della fetta e la disegna
while (rd.Read()) {
float AngoloCirc = 360 * Convert.ToSingle(rd["tot"]) / totale;
graphics.FillPie(new SolidBrush(ColorTranslator.FromHtml(Convert.ToStri ng(rd["tot"]))), 0, 0, width, height, AngoloIniziale, AngoloCirc);
AngoloIniziale += AngoloCirc;
}
}