ASP.NET 生成图片水印、验证码文字的字体

时间:2019-06-24 发布者: 访问量:3808

在ASP.NET生成图片时中常使用到生成水印文字,生成验证码文字等,这些图片上的文字有时候我们需要设置更好看的字体,实现的方法一般是调用服务器 C:/windows/fonts/ 目录下的字体,对于服务器中没有的字体就需要我们在服务器上面安装,显然不是很方便。另外一中方法是:把字体库文件放在我们的项目中,生成图片中的文字时调用项目的字体库。但是,这种方法使用具有局限性,对于WEB页面的字体就无能为力了。关于WEB页面调用自定义的字体,详见上面的《一、让用户使用我设计的网页字体》 。

a.      下载字体文件,并加入到项目中,例如:有一个项目的登录验证码功能用到的字体是“Andy”字体,这里就需要下载Andy的字体库,“andyb.ttf”。

b.      把字体库加入到项目中,例如:加入到根目录下的“Share/Fonts/”下面。

c.      在生成验证码的后台文件中,创建的字体,这里创建一个方法来生成一个自定义的字体。

/// <summary>
/// 创建一个定义的字体,这个字体是程序级别创建的
/// </summary>
/// <returns>返回:字体,这里为Andy字体</returns>
private Font CreateFamily()
{
    PrivateFontCollection pfc = new PrivateFontCollection();
    //string fontpath = HttpRuntime.AppDomainAppPath + "Share/Fonts/andyb.ttf";    //这种方法也能获取到项目的绝对路径,所以还要加上文件的相对路径
    string fontpath = System.Web.HttpContext.Current.Server.MapPath("~/Share/Fonts/andyb.ttf");  //获取字体路径
    //pfc.AddFontFile(@"C:/windows/fonts/andyb.ttf");  //这种方法是获取服务器中的字体,不过需要服务器字体库中存在改字体文件
    pfc.AddFontFile(fontpath);           
    //添加到字体
    Font font = new System.Drawing.Font(pfc.Families[0], 20, System.Drawing.FontStyle.Bold);    //创建一个自定义的字体
    return font;
}

关键三个地方:

1.PrivateFontCollection 类命名空间在 System.Drawing.Text 下面这个方面提供一个创建字体库的数组对象,

2.需要通过绝对路径获取字体库的路径这里提供两种方法:

Application.StartupPath+"Share/Fonts/andyb.ttf"

System.Web.HttpContext.Current.Server.MapPath("~/Share/Fonts/andyb.ttf")

3.创建一个Font字体

注意:这种方法也可以获取C:/windows/fonts/ 目录下面的字体,前提是字体存在的情况下。
发布于
  用户评论
    生活编程