Voici ce qui a vraiment bien fonctionné. Tout d 'abord, la cartographie partielle laide (mais nécessaire) où toutes les cabines sont et stockent les valeurs. Donc, pour le stand 1, nous allons stocker les quatre coins de la zone que nous voulions mettre en évidence.
Sur l'image, nous utilisons une image asp: normale, mais définissons ImageUrl sur BoothMap.ashx, un gestionnaire que nous avons conçu pour dessiner les emplacements de la cabine, en envoyant l'emplacement de la cabine dans la chaîne de requête. Ainsi, il pourrait ressembler à ...
<asp:Image ID="imgBoothMap" ImageUrl="BoothMap.ashx?ID=A1" runat="server" />
Notre gestionnaire ressemble à quelque chose comme ça ...
<%@ 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;
}
}
}
Tout cela fournit le cadre pour nous de mettre en évidence les emplacements de carte dans ASP.Net. Si nous le voulions, nous pourrions facilement modifier le code pour mettre en évidence plusieurs zones de la carte, changer les couleurs, etc.
La raison pour laquelle cela a été fait comme ceci (et sans utiliser jQuery) est que le reste de l'architecture du site n'a pas fonctionné. t se prête vraiment à jQuery ou, plus important encore, un bon moyen de tirer les données nécessaires de la DB. Avoir à faire tout cela entièrement côté serveur, cela a bien fonctionné. – jcelgin
Cela ne semble pas mauvais. La seule chose que je changerais serait d'utiliser le pattern 'using' sur ces objets' IDisposable', juste au cas où. –