您的位置:首页 > 移动开发 > Objective-C

简单的在图片上加上文字的效果

2007-01-03 15:02 225 查看
先看看效果先



在地址栏输入后面的网址看看:http://www.conanlwl.net/bbspic/bbspic.aspx?style=1&t=Hello World!
其中style为图片模板ID,t为显示文本

建一页面,命名为bbspic.aspx,在其CS写下以下代码.


using System;


using System.Collections;


using System.ComponentModel;


using System.Data;


using System.Drawing;


using System.Web;


using System.Web.SessionState;


using System.Web.UI;


using System.Web.UI.WebControls;


using System.Web.UI.HtmlControls;


using System.IO;




using System.Xml;




namespace BbsPic




...{




  /**//// <summary>


  /// BbsPic 的摘要说明。


  /// 一个简单的在图片上加上文字水印的效果


/// 地址栏参数t为显示文本


  /// 地址栏参数style为图片模板ID


  /// Author:Conanlwl


  /// http://www.conanlwl.net


  /// </summary>


  public class BbsPic : System.Web.UI.Page




  ...{


    private XmlDocument myDoc = new XmlDocument();


    priva
4000
te void Page_Load(object sender, System.EventArgs e)




    ...{


      // 在此处放置用户代码以初始化页面


      string str=Request.QueryString["t"];


      int style=Convert.ToInt32(Request.QueryString["style"]);


      if(style<1)style=1;


      DrawPic(str,style);


      


      


    }






    Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码


    override protected void OnInit(EventArgs e)




    ...{


      //


      // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。


      //


      InitializeComponent();


      base.OnInit(e);


    }


    




    /**//// <summary>


    /// 设计器支持所需的方法 - 不要使用代码编辑器修改


    /// 此方法的内容。


    /// </summary>


    private void InitializeComponent()




    ...{ 


      this.Load += new System.EventHandler(this.Page_Load);




    }


    #endregion


    private void DrawPic(string str,int style)




    ...{      


      try




      ...{


        myDoc.Load(Server.MapPath("ImageInfo.xml"));


        XmlNode xn = myDoc.SelectSingleNode("//Image[ID='" + style + "']");


        XmlNodeList xnl = xn.ChildNodes;    


      


        if(str==null || str=="")str=xnl.Item(6).InnerText;


        System.Drawing.Image image=System.Drawing.Image.FromFile(Server.MapPath(xnl.Item(1).InnerText));


        Graphics g= Graphics.FromImage(image);;


        Font font = new System.Drawing.Font(FontFamily.GenericSansSerif,20);


        SolidBrush brush=new SolidBrush(Color.Black);


      


        g.DrawString(str,font,brush,new Rectangle(int.Parse(xnl.Item(2).InnerText),int.Parse(xnl.Item(3).InnerText),int.Parse(xnl.Item(4).InnerText),int.Parse(xnl.Item(5).InnerText)));


          


        System.IO.MemoryStream ms = new System.IO.MemoryStream(); 


        image.Save(ms, System.Drawing.Imaging.ImageFormat.Png); 


        Response.ClearContent(); 


        Response.ContentType = "image/Png"; 


        Response.BinaryWrite(ms.ToArray()); 


        image.Dispose();


        g.Dispose();  


      }


      catch(Exception  ex)




      ...{


        Response.Write(ex.Message);


        Response.End();


      }


      


          


    }


  }


}



 以下是相应的XML文件ImageInfo.XML


<?xml version="1.0" encoding="GB2312" ?> 


<ImageInfo>


  <Image>


    <ID>1</ID>


    <URL>images/pic.jpg</URL>


    <x>200</x>


    <y>20</y>


    <width>280</width>


    <height>160</height>


    <DefaultText><![CDATA[图片地址的格式为:http://www.conanlwl.net/bbspic/bbspic.aspx?stype=样式的数字&t=你要发表的文字]]></DefaultText>  


  </Image>


  <Image>


    <ID>2</ID>


    <URL>images/pic01.jpg</URL>


    <x>10</x>


    <y>28</y>


    <width>235</width>


    <height>180</height>


    <DefaultText><![CDATA[图片地址的格式为:http://www.conanlwl.net/bbspic/bbspic.aspx?stype=样式的数字&t=你要发表的文字]]></DefaultText>  


  </Image>


</ImageInfo>



每一个<Image>标签都是一张图片的模板信息.
ID为模板本身ID,也即地址栏中style所对应的参数.
URL模板图片的相对地址
x,y,width,height分别为图片模板中要显示文件的区域的矩形的左上角坐标x,y以及矩形的宽与高width,height,这四个值可以用PS或其它绘图软件从图片中获取
DefaultText为地址栏不传入t参数时的默认文本
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息