我可以平凡,但决不能平庸!

——我不需要焦点.因为我就是焦点!
VS2005新控件之 image/imagebutton/imagemap

完整源文件下载地址 https://files.cnblogs.com/thcjp/image.rar

Image相关的有三个控件,一个是image  二个是 ImageButton
三个是!!铛铛铛,新控件--ImageMap ,依我的说法,其实这控件压根就一鸡肋,没意思,说它是鸡肋也不是没道理,可以用在图片上特定的区域响应事件,其次是可以导航,我不知道微软的人见过Dreamweaver没有,我想没有,否则的话他们的这个控件不会做得这么难用,你看Dreamweaver的热点多好用,呵呵,闲话少说,开工!!!

Default.aspx前台HTML代码

 

Default.aspx后台CS代码

 

Delt.aspx前台HTML代码

 

Delt.aspx页后台CS代码

 

Feedback

# re: VS2005新控件之 image/imagebutton/imagemap  回复  更多评论   

2006-05-31 00:01 by 天轰穿
================下面是转载的ASP.NET2.0 新增控件(1)——ImageMap========================
原地址是 http://blog.joycode.com/liuhuimiao/articles/50507.aspx

ImageMap控件是一个让你可以在图片上定义热点(HotSpot)区域的服务器控件。用户可以通过点击这些热点区域进行回发(PostBack)操作或者定向(Navigate)到某个URL位址。该控件一般用在需要对某张图片的局部范围进行互动操作时,其主要属性有HotSpotMode、HotSpots和主要操作Click。



? HotSpotMode:顾名思义为热点模式,对应枚举类型System.Web.UI.WebControls.HotSpotMode。其选项及说明如下:

1) NotSet:未设置项。虽然名为未设置,但其实默认情况下会执行定向操作,定向到你指定的URL位址去。如果你未指定URL位址,那默认将定向到自己的Web应用程序根目录。

2) Navigate:定向操作项。定向到指定的URL位址去。如果你未指定URL位址,那默认将定向到自己的Web应用程序根目录。

3) PostBack:回发操作项。点击热点区域后,将执行后部的Click事件。

4) Inactive:无任何操作,即此时形同一张没有热点区域的普通图片。

? HotSpots:该属性对应着System.Web.UI.WebControls.HotSpot对象集合。HotSpot类是一个抽象类,它之下有CircleHotSpot(圆形热区)、RectangleHotSpot(方形热区)和PolygonHotSpot(多边形热区)三个子类。实际应用中,都可以使用上面三种类型来定制图片的热点区域。如果需要使用到自定义的热点区域类型时,该类型必须继承HotSpot抽象类。下面即有个自定义的菱形热区DiamondHotSpot范例可以参考。

? Click:对热点区域的点击操作。通常在HotSpotMode为PostBack时用到。



对ImageMap控件有了以上一个基本了解后,接着看ASP.NET QuickStart提供个两个应用示例和最后一个自定义菱形热区示例就会有所体会了。



示例一:ImageMap 多种HotSpotMode 示例



<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">">http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<script runat="server">



</script>

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>Untitled Page</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<h3><font face="Verdana">ImageMap 多种 HotSpotMode 示例</font></h3>



<asp:imagemap id="Buttons" imageurl="hotspot.jpg" alternatetext="Navigate buttons"

runat="Server">



<asp:RectangleHotSpot

hotspotmode="Navigate"

NavigateUrl="navigate1.htm"

alternatetext="Button 1"

top="30"

left="175"

bottom="110"

right="355">

</asp:RectangleHotSpot>



<asp:RectangleHotSpot

hotspotmode="Navigate"

NavigateUrl="navigate2.htm"

alternatetext="Button 2"

top="155"

left="175"

bottom="240"

right="355">

</asp:RectangleHotSpot>



<asp:RectangleHotSpot

hotspotmode="Navigate"

NavigateUrl="navigate3.htm"

alternatetext="Button 3"

top="285"

left="175"

bottom="365"

right="355">

</asp:RectangleHotSpot>



</asp:imagemap>



</div>

</form>

</body>

</html>



示例二:ImageMap PostBack 模型示例



<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">">http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<script runat="server">

void Buttons_Clicked(object sender, ImageMapEventArgs e)

{

label1.Text = e.PostBackValue + " clicked!";

}

</script>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title>Untitled Page</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<h3>

<font face="Verdana">ImageMap PostBack 模型示例</font></h3>

<asp:imagemap id="Buttons" imageurl="hotspot.jpg" alternatetext="Navigate buttons"

hotspotmode="Postback" onclick="Buttons_Clicked" runat="Server">



<asp:RectangleHotSpot

hotspotmode="Postback"

postbackvalue="Button1"

alternatetext="Button 1"

top="30"

left="175"

bottom="110"

right="355">

</asp:RectangleHotSpot>



<asp:RectangleHotSpot

hotspotmode="Postback"

postbackvalue="Button2"

alternatetext="Button 2"

top="155"

left="175"

bottom="240"

right="355">

</asp:RectangleHotSpot>



<asp:RectangleHotSpot

hotspotmode="Postback"

postbackvalue="Button3"

alternatetext="Button 3"

top="285"

left="175"

bottom="365"

right="355">

</asp:RectangleHotSpot>



<asp:RectangleHotSpot

hotspotmode="Postback"

postbackvalue="Background"

alternatetext="Background"

top="0"

left="0"

bottom="390"

right="540">

</asp:RectangleHotSpot>



</asp:imagemap>



<p>

<h3>

<font face="verdana">

<asp:Label ID="label1" runat="server"></asp:Label>

</font>

</h3>

</p>

</div>

</form>

</body>

</html>



示例三:自定义热点区域 DiamondHotSpot 菱形热点区域



1. 创建DiamondHotSpot类

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;



namespace HotSpotTest

{

public class DiamondHotSpot : System.Web.UI.WebControls.HotSpot

{

public int CenterX

{

get

{

object val = ViewState["centerx"];

if (val == null)

return 0;

else

return (int)val;

}

set

{

ViewState["centerx"] = value;

}

}



public int CenterY

{

get

{

object val = ViewState["centery"];

if (val == null)

return 0;

else

return (int)val;

}

set

{

ViewState["centery"] = value;

}

}



public int Width

{

get

{

object val = ViewState["width"];

if (val == null)

return 0;

else

return (int)val;

}

set

{

ViewState["width"] = value;

}

}



public int Height

{

get

{

object val = ViewState["height"];

if (val == null)

return 0;

else

return (int)val;

}

set

{

ViewState["height"] = value;

}

}



protected override string MarkupName

{

get

{

return "poly";

}

}



public override string GetCoordinates()

{

return CenterX.ToString() + "," +

(CenterY - Height / 2).ToString() + "," +

(CenterX + Width / 2).ToString() + "," +

CenterY.ToString() + "," +

CenterX.ToString() + "," +

(CenterY + Height / 2).ToString() + "," +

(CenterX - Width / 2).ToString() + "," +

CenterY.ToString();

}

}

}



2. 在页面写 Register 指令

<%@ Register TagPrefix="HotSpotTest" Namespace="HotSpotTest" %>



3. 在后部代码里动态添加菱形热区,或者直接在页面代码里声明菱形热区

? 后部代码动态添加:

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

HotSpotTest.DiamondHotSpot dhs = new HotSpotTest.DiamondHotSpot();

dhs.CenterX = 100;

dhs.CenterY = 50;

dhs.Height = 100;

dhs.Width = 50;



ImageMap1.HotSpots.Add(dhs);

}

}

? 页面代码声明:

<asp:ImageMap ID="ImageMap1" runat="server" ImageUrl="hotspot.jpg" HotSpotMode="PostBack">

<HotSpotTest:DiamondHotSpot CenterX="100" CenterY="50" Height="100" Width="50" />

</asp:ImageMap>





[总结]:在大部分Web应用中可能很少会用到ImageMap,但正因为有了ImageMap,才让Web应用更加多姿多彩。有了ImageMap,我们可以动态的在一张图片中的某个局部范围内进行相应的处理请求的梦想再也不遥远。





参考及引用资料列表:

1. http://beta.asp.net/QUICKSTART/aspnet/doc/ctrlref/standard/imagemap.aspx

2. http://weblogs.asp.net/dannychen/archive/2005/04/11/399873.aspx

3. MSDN Library for Visual Studio 2005 beta2

posted on 2007-02-05 00:13  狼行天下  阅读(1013)  评论(0)    收藏  举报