利用 ASP.NET ImageMap 控件可以創(chuàng)建一個(gè)圖像,使其包含許多可由用戶單擊的區(qū)域(熱區(qū)),這些區(qū)域稱為“作用點(diǎn)”。每一個(gè)作用點(diǎn)都可以是一個(gè)單獨(dú)的超鏈接或回發(fā)事件。
常用屬性:
HotSpotMode屬性
HotSpotMode屬性用于獲取或設(shè)置單擊熱點(diǎn)區(qū)域后的默認(rèn)行為方式。
ImageMap控件的HotSpotMode屬性的枚舉值如下表所示:
枚舉值 | 說明 |
Inactive | 無任何操作,即此時(shí)就像一張沒有熱點(diǎn)區(qū)域的普通圖片 |
NotSet | 未設(shè)置項(xiàng),同時(shí)也是默認(rèn)項(xiàng)。雖然名為未設(shè)置,但是默認(rèn)情況下將執(zhí)行定向操作,即鏈接到指定的URL地址。如果未指定URL地址,則默認(rèn)鏈接到應(yīng)用程序根目錄下 |
Navigate | 定向操作項(xiàng)。鏈接到指定的URL地址。如果未指定URL地址,則默認(rèn)鏈接到應(yīng)用程序根目錄下 |
PostBack | 回傳操作項(xiàng)。單擊熱點(diǎn)區(qū)域后,將觸發(fā)控件的Click事件 |
注意:HotSpotMode屬性雖然為圖片中所有熱點(diǎn)區(qū)域定義了單擊事件的默認(rèn)行為方式,但在某些情況下,由于圖片中熱點(diǎn)區(qū)域的行為方式各不相同,所以還需要單獨(dú)為每個(gè)熱點(diǎn)區(qū)域定義HotSpotMode屬性及其相關(guān)屬性。
HotSpots屬性
HotSpots屬性用于獲取HotSpots對(duì)象集合。
ImageMap控件由HotSpot類的實(shí)例組成。一個(gè)HotSpot定義圖像映射中的一個(gè)可點(diǎn)擊區(qū)域。ASP.NET Framework帶有3種HotSpot類。
CircleHotSpot:用于在圖像映射中定義一個(gè)圓形區(qū)域。
RectangleHotSpot:用于在圖像映射中定義一個(gè)矩形區(qū)域。
PolygonHotSpot:用于在圖像映射中定義一個(gè)不規(guī)則形狀區(qū)域。
CircleHotSpot、RectangleHotSpot和PolygonHotSpot這3個(gè)子類的實(shí)例稱為HotSpot對(duì)象。
示例代碼:
Default.aspx
代碼如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>示例8-4</title>
<link id="InstanceStyle" href="StyleSheet.css" type="text/css" rel="stylesheet" />
</head>
<body>
<form id="Form1" runat="server">
<div>
<fieldset style="width: 290px">
<legend class="mainTitle">ImageMap控件典型應(yīng)用</legend>
<br />
<asp:ImageMap ID="ImageMap1" runat="server" ImageUrl="~/Image/pic1.png" OnClick="ImageMap1_Click">
<asp:RectangleHotSpot AlternateText="模塊" Bottom="175" Left="77" NavigateUrl="http://localhost/"
Right="150" Target="_blank" Top="119" />
<asp:CircleHotSpot AlternateText="處理1" HotSpotMode="PostBack" PostBackValue="Pro1"
Radius="39" X="241" Y="50" />
<asp:CircleHotSpot AlternateText="處理2" HotSpotMode="PostBack" PostBackValue="Pro2"
Radius="39" X="241" Y="285" />
<asp:PolygonHotSpot AlternateText="引擎" Coordinates="366,118,325,160,372,206,411,161"
HotSpotMode="Inactive" />
</asp:ImageMap>
<br />
<asp:Label ID="LabMessage" runat="server"></asp:Label>
</fieldset>
</div>
</form>
</body>
</html>
Default.aspx.cs
代碼如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void ImageMap1_Click(object sender, ImageMapEventArgs e)
{
String region = "";
switch (e.PostBackValue)
{
case "Pro1":
region = "處理1";
break;
case "Pro2":
region = "處理2";
break;
}
LabMessage.Text = "您單擊的是<b>" + region + "</b>.";
}
}