先看看效果先
在地址栏输入后面的网址看看: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();
private 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();
}
}
}
}
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();
private 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 >
< 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参数时的默认文本