ASPX向ASCX传值以及文本创建图片(附源码)

网页ASPX有一个TextBox,另一个ASCX有一个ImageButton,用户点一点这个铵钮,把用户在TextBox输入的文字创建为一个图片,ASCX的ImageButton的ImageUrl重新指向这刚产生的图片。

为了传值,写一个接口,返回aspx的TextBox函数:

代码如下:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI.WebControls; 
/// <summary> 
/// Summary description for Itransmitable 
/// </summary> 
namespace Insus.NET 
{ 
public interface Itransmitable 
{ 
TextBox GetTextBoxControl(); 
} 
}

A.aspx.cs,并实现接口。

代码如下:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls; 
using Insus.NET; 
public partial class A : System.Web.UI.Page,Itransmitable 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
} 
public TextBox GetTextBoxControl() 
{ 
return this.tbHid; 
} 
}

A.aspx,把用户控件B.ascx接入页面。

代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="A.aspx.cs" Inherits="A" %> 
<%@ Register src="B.ascx" tagname="B" tagprefix="uc1" %> 
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
<asp:TextBox ID="tbHid" runat="server" /> 
<uc1:B ID="B1" runat="server" /> 
</div> 
</form> 
</body> 
</html>

B.ascx:

代码如下:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="B.ascx.cs" Inherits="B" %> 
<asp:ImageButton runat="server" ID="imgBmp" OnClick="imgBmp_Click" BorderWidth="1" />

B.ascx.cs:

代码如下:

using System; 
using System.Collections.Generic; 
using System.Drawing; 
using System.Drawing.Drawing2D; 
using System.Drawing.Imaging; 
using System.Drawing.Text; 
using System.IO; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using Insus.NET; 
public partial class B : System.Web.UI.UserControl 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
this.imgBmp.ImageUrl = GetImagePath("Insus.NET"); //默认值。 
} 
protected void imgBmp_Click(object sender, ImageClickEventArgs e) 
{ 
Itransmitable textbox = (Itransmitable)this.Page; //把page转换为接口。 
this.imgBmp.ImageUrl = GetImagePath(textbox.GetTextBoxControl().Text.Trim()); 
} 
//创建图片 
private string GetImagePath(string _text) 
{ 
Bitmap bitmap = new Bitmap(1, 1); 
Font font = new Font("Arial", 25, FontStyle.Regular, GraphicsUnit.Pixel); 
Graphics graphics = Graphics.FromImage(bitmap); 
int width = (int)graphics.MeasureString(_text, font).Width; 
int height = (int)graphics.MeasureString(_text, font).Height; 
bitmap = new Bitmap(bitmap, new Size(width, height)); 
graphics = Graphics.FromImage(bitmap); 
graphics.Clear(Color.White); 
graphics.SmoothingMode = SmoothingMode.AntiAlias; 
graphics.TextRenderingHint = TextRenderingHint.AntiAlias; 
graphics.DrawString(_text, font, new SolidBrush(Color.FromArgb(0, 0, 0)), 0, 0); 
graphics.Flush(); 
graphics.Dispose(); 
string fileName = Path.GetFileNameWithoutExtension(Path.GetRandomFileName()) + ".jpg"; 
bitmap.Save(Server.MapPath("~/ImageLib/") + fileName, ImageFormat.Jpeg); 
return "~/ImageLib/" + fileName; 
} 
}

运行效果:
ASPX向ASCX传值以及文本创建图片(附源码) 
Demo code download(.NET 4.5)

相关推荐