As i told in the forum, i use this to add shadow to a text, maybe you can adapt it:
public void ProcessRequest(HttpContext context)
{
Bitmap logo;
if (pfcoll == null)
{
pfcoll = new System.Drawing.Text.PrivateFontCollection();
pfcoll.AddFontFile(HttpContext.Current.Server.MapPath("Fontes\\BITSUMIS.TTF"));
}
Font f = new Font(pfcoll.Families[0], 96, FontStyle.Italic);
logo = new Bitmap(210, 90);
Graphics g = Graphics.FromImage(logo);
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
g.DrawString(HttpContext.Current.Request["id"], f, new SolidBrush(Color.FromArgb(0xB3, 0xB3, 0xA3)), new PointF(2, 2));
var rec = new Rectangle(0, 0, 210, 90);
using (var backBrush = new LinearGradientBrush(rec, Color.FromArgb(45, 62, 92), Color.FromArgb(0x1B, 0x25, 0x37), LinearGradientMode.Vertical))
{
g.DrawString(HttpContext.Current.Request["id"], f, backBrush, new PointF(0, 0));
}
var ms = new MemoryStream();
logo.Save(ms, ImageFormat.Png);
var msToArray = ms.ToArray();
context.Response.ContentType = "image/png";
context.Response.BinaryWrite(msToArray);
}