怎样在imagebutton中动态显示图像
一般imagebutton中显示的图像都是由ImageURL静态指定的。
但我现在的问题是想根据imagebutton的鼠标事件进行图像的放大缩小。
图信息并不是一个.jpg或.gif文件,甚至不是一副图像,而是自定义的一些图形数据,比如组成这副图的有几个点,几条线,几个圆等等。如果在imagebutton里点击鼠标提交后,我要在事件处理函数中根据图形信息动态的将图画一遍,再传回客户端显示。
imagebutton里好像并没有诸如画点,画线,画面的成员函数。
这种功能,我看到已经有人做出来了,但是我一点概念也没有,所以想问问大家有什么好办法。
问题点数:80、回复次数:6Top
1 楼buaawjh(猪猪爱咬咬)回复于 2003-08-02 20:52:09 得分 0
1--根据你的具体需求通过GDI+的方式动态生成一张图(.bmp.jpg.gif)
2--邦定到这张图即可Top
2 楼panyee(快乐王子)回复于 2003-08-02 21:04:52 得分 0
imagebutton生成html后就是这样子:
<input type="image" name="ImageButton1" id="ImageButton1" src="/WebApplication1/receivefiles.GIF" alt="ggggg" border="0" style="Z-INDEX: 110; LEFT: 413px; POSITION: absolute; TOP: 367px" />
那要实现它的鼠标事件应该就好办了
通过服务端给它指定相应的事件, 用style改变它的大小, javascript改变图象的url,
ImageButton1.Attributes.Add("onmouseover", "this.style.width=50");Top
3 楼shannon977(任平生)回复于 2003-08-02 21:15:00 得分 0
怎么生成,怎么绑定(是不是ImageURL再赋一次值)!
这是个办法,但是随之而来的问题是,假如有多个用户访问,多次作放大和缩小操作,就会在服务器端生成许多临时图像,不好管理。
我看了一下那个已经实现该功能的.aspx文件,其中一个showmap.aspx用:
<asp:imagebutton id="MapImg" runat="server" BackColor="White" Width="704px" Height="593px" ToolTip="Map" ImageUrl="Map.aspx" BorderWidth="1px"></asp:imagebutton>
这个ImageButton来显示图像,但是注意它的ImageUrl的值,是Map.aspx,而不是.jpg或.gif。
Map.aspx是这样的:
<%@ Page language="c#" Codebehind="Map.aspx.cs" AutoEventWireup="false" Inherits="WebGIS.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>Map</title>
<meta content="Microsoft Visual Studio 7.0" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Map" method="post" runat="server">
<P> </P>
</form>
</body>
</HTML>
其.cs文件我看不见。实现者自己说是在imagebutton(showmkap.aspx中那个)每次鼠标点击事件里,动态的重画图像,似乎动态的重画图像是放在Map.aspx中的,这样每次鼠标点击,imagebutton根据ImageURL刷新,重绘的内容才会不一样!
但是我不知道图像是如何画到Map.aspx里去的,还有imagebutton能显示一个.aspx文件吗?Top
4 楼panyee(快乐王子)回复于 2003-08-02 21:25:19 得分 75
那个.cs文件实现的应该是动态构造一张图出来, 我以前写了个跟据url参数动态生成一张图片的aspx文件, 可以说有类似的地方
但如果aspx文件没有参数, 那如何让它实现不同的状态生成不同的图片呢?
第一, 可以在你包含图片的aspx页面给Session参数是一个办法
第二, 图片生成, 即访问你的Map.aspx文件是在主页面生成之后才进行访问的(ie在下载页面时,遇到需要显示图片, 才去请求下载相应的图片, 而那时,父页面已经生成并被客户端下载)
第三, 参数要有个标准
<%@Page language="c#" contenttype="image/jpeg" %>
<%@import namespace="System.Drawing"%>
<%@import namespace="System.Drawing.Imaging"%>
<%@import namespace="System.Drawing.Drawing2D"%>
<%
String str = Request.Params["str"];
if(str == ""||str == null)
str = "请输入参数str";
Response.Clear();
Bitmap img = new Bitmap(240, 30, PixelFormat.Format24bppRgb);
Graphics g = Graphics.FromImage(img);
g.Clear(Color.Green);
g.SmoothingMode = SmoothingMode.AntiAlias;
g.DrawString(str, new Font("黑体", 16, FontStyle.Bold), new SolidBrush(Color.White), new Point(1,1));
g.FillRectangle(new LinearGradientBrush(new Point(0,0), new Point(240, 30), Color.FromArgb(0,0,0,0), Color.FromArgb(255,255,255,255)), 0,0,240,30);
img.Save(Response.OutputStream, ImageFormat.Jpeg);
g.Dispose();
img.Dispose();
Response.End();
%>Top
5 楼shannon977(任平生)回复于 2003-08-02 21:50:11 得分 0
啊,哈哈,有点意思了,居然用Page.Response传,我怎么没想到呢,真是太笨啦!
下面讨论参数的问题,我想无非是要放大还是缩小,还有就是鼠标点击处的窗口坐标,由点击处的窗口坐标换算到实际图像坐标中心,这个可以在imagebutton的鼠标事件处理函数中完成,显示的大小就是imagebutton的尺寸。问题是在imagebutton的鼠标事件处理函数中算得的这些参数怎样才能让Map.aspx得到,难道非得用session吗?还有没有其他好的办法!Top
6 楼panyee(快乐王子)回复于 2003-08-04 17:52:23 得分 5
页面点击鼠标, 可用用js事件取得鼠标位置, 拖动也是这样, 然后动态改变
图片的url, 通过url把参数传给Map.aspx
具体网上的例子我没有看过, 但讨论的这种方式肯定是可以实现的Top



