Here's what ended up working really well.
First, the ugly (but necessary) part - mapping where all of the booths are and storing the values. So, for booth1 we would store the four corner points of the area we wanted to highlight.
On the image, we use a normal asp:image, but set the ImageUrl to BoothMap.ashx, a handler we've designed to draw the booth locations, sending in the booth location in the querystring. So, it might look like...
<asp:Image ID="imgBoothMap" ImageUrl="BoothMap.ashx?ID=A1" runat="server" />
Our handler looks something like this...
<%@ WebHandler Language="C#" Class="BoothMap" %>
using System.Drawing;
using System.Drawing.Imaging;
using System.Web;
public class BoothMap : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "image/jpg";
//load booth corners
Point[] points = GetBoothCorners(context.Request.QueryString["ID"]);
Image curImage = Image.FromFile(@"C:\BoothMapjpg");
Graphics g = Graphics.FromImage(curImage);
Pen transPen = new Pen(Color.FromArgb(128, 132, 112, 255), 10);
Brush transBrush = new SolidBrush(Color.FromArgb(128, 132, 112, 255));
g.FillPolygon(transBrush, points);
curImage.Save(context.Response.OutputStream, ImageFormat.Jpeg);
g.Dispose();
curImage.Dispose();
context.Response.End();
}
public bool IsReusable {
get {
return true;
}
}
}
All this provides the framework for us to highlight map locations in ASP.Net. If we wanted to, we could easily modify the code to highlight multiple areas of the map, change colors, etc.