ASP.net中DynamicImage控件的使用方法

来源:互联网 发布:下载手机短信软件下载 编辑:程序博客网 时间:2024/05/16 17:41

最初的需求是在页面中显示图片对象,例如期望在Image控件中显示一个Bitmap对象,而不是让Image控件指向一个Url。

网上有两种常见的解决方案:

1. 将Image控件的url指向一个文件路径,将生成的图片对象保存到文件中。

2. 将image的url指向一个页面,然后将生成的图片对象response到url那个页面。

对于第一种方法,需要将图片对象保存到服务器上,无疑不是一个好的解决方法;

对于第二种方法,总是只能在新的页面中显示图片,不能满足用户的需求。

 

下面介绍一下如何在当前页面中显示图片对象。

1. 到http://msdn.microsoft.com/zh-cn/site/cc163988下载CuttingEdge0404.exe文件到本地。

2. 执行exe后会进行解压缩

3. 到解压后的文件夹中找到DynamicImage.dll,放到工程的bin文件夹下,刷新工程文件列表

4. 修改web.config,在<httpHandlers>标签中增加:

<add verb="GET" path="cachedimageservice.axd" type="MsdnMag.CachedImageService,DynamicImage"/>

注意,不要删除web.config中<httpHandlers>标签中已有的配置信息

    <httpHandlers>        <add verb="GET" path="cachedimageservice.axd" type="MsdnMag.CachedImageService,DynamicImage"/>    </httpHandlers>

5. 在要显示图片的.aspx页面中,增加:

<%@ Register TagPrefix="cc1" Namespace="MsdnMag" Assembly="DynamicImage" %>

<cc1:dynamicimage ID="Image1" runat="server" Image='<%# GetRandomNumber() %>'/>

我这里采用了母版。

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="aaa.aspx.cs" Inherits="aaa" Title="aaa" %><%@ Register TagPrefix="cc1" Namespace="MsdnMag" Assembly="DynamicImage" %><asp:Content ID="Content1" ContentPlaceHolderID="Counts" Runat="Server">    <cc1:dynamicimage ID="Image1" runat="server" Image='<%# GetRandomNumber() %>'/></asp:Content>

6. 在后台.cs文件中增加:

Page.DataBind();OnInit()以及InitializeComponent()

其中GetRandomNumber方法是用来生成图片的,可以根据自己的需求采用相应的方法,同时也要修改.aspx中的dynamicimage控件的Image属性的值

using System;using System.ComponentModel;using System.Drawing;using System.Web;using System.Web.SessionState;using System.Web.UI;using System.Web.UI.WebControls;using System.IO;/// <summary>/// Summary description for WebForm1./// </summary>public partial class aaa: System.Web.UI.Page{    protected void Page_Load(object sender, System.EventArgs e)    {        Page.DataBind();    }    public System.Drawing.Image GetRandomNumber()    {        // Store the number        Random gen = new Random();        int number = gen.Next();        // Generate the image        Bitmap bmp = new Bitmap(200, 100);        using (Graphics g = Graphics.FromImage(bmp))        {            g.Clear(Color.LightCyan);            using (Font f = new Font("Impact", 20))            {                g.DrawString(number.ToString(), f, Brushes.Blue, 10, 10);            }        }        return bmp;    }    #region Web Form Designer generated code    override protected void OnInit(EventArgs e)    {        //        // CODEGEN: This call is required by the ASP.NET Web Form Designer.        //        InitializeComponent();        base.OnInit(e);    }    /// <summary>    /// Required method for Designer support - do not modify    /// the contents of this method with the code editor.    /// </summary>    private void InitializeComponent()    {    }    #endregion}

7. 运行一下自己的工程,看看是否成功了?如果有问题,可以给我留言,谢谢。

 

Key words:Image ASP.net C# Dynamic Bitmap Object Display

关键词:图片 动态显示 对象

 

[未经作者许可,不得转载]