文本創建圖片,ASPX向ASCX傳值


網頁ASPX有一個TextBox,另一個ASCX有一個ImageButton,用戶點一點這個銨鈕,把用戶在TextBox輸入的文字創建為一個圖片,ASCX的ImageButton的ImageUrl重新指向這剛產生的圖片。

 

為了傳值,寫一個接口,返回aspx的TextBox函數:

Itransmitable
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.asp.cs,並實現接口。

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接入頁面。

A.aspx
<%@ 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:

View Code
<%@ 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:

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;
    }
}


運行效果:

 

 

Demo code download(.NET 4.5) :
http://download.cnblogs.com/insus/ASPDOTNET/aspx2ascx.rar

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM