Вот что получилось очень хорошо.
Во-первых, уродливая (но необходимая) часть - отображение, где находятся все стенды, и сохранение значений. Таким образом, для стенда 1 мы будем хранить четыре угловые точки области, которую мы хотели выделить.
На изображении мы используем обычный asp: image, но для ImageUrl задаем значение BoothMap.ashx, обработчик, который мы разработали для рисования местоположений кабин, отправляя их в строку запроса. Так что это может выглядеть как ...
<asp:Image ID="imgBoothMap" ImageUrl="BoothMap.ashx?ID=A1" runat="server" />
Наш обработчик выглядит примерно так ...
<%@ 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:\BoothMap.jpg");
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;
}
}
}
Все это предоставляет нам основу для выделения мест на карте в ASP.Net. Если бы мы захотели, мы могли бы легко изменить код, чтобы выделить несколько областей карты, изменить цвета и т. Д.