当前位置: 首页 > 图文教程 > 网络编程 > ASP > ASP.NET编程实例ABC(2)

ASP
ASP正则表达式技巧
ASP Access实现网站计数器(访问量)
ASP新闻分页,将一篇过长的文章分页,生成静态页面
一些关于asp 购物车的想法
一个sql查询器,自动画表格填字段
ASP实现文件直接下载的代码
把网页中的(电话,qq等数字)生成图片的ASP程序
asp长文章用分页符来分页显示
Asp函数介紹(37个常用函数)
ASP中的面向对象类
分页实现方法的性能比较
asp ajax跨域提交数据
asp修改文件和文件夹的名字的代码
ASP 多关键词查询实例代码
asp被杀毒软件误删的解决方法
asp 多关键词搜索的简单实现方法
asp 根据IP地址自动判断转向分站的代码
asp dictionary对象的用法
ASP 千万级数据分页的存储过程
ASP隐藏真实文件的下载功能实现代码

ASP.NET编程实例ABC(2)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 189 ::
收藏到网摘: n/a

      
  
  
  在ASP.NET中随意创建图形信息
  如果没有一个外部组件的支持,在ASP中是不能动态创建图形的,不管它是一个图表,一个横幅或仅仅是一个图形计数器。可喜的是,这一点在ASP.NET中改变了。现在,我们只需要使用内置功能,就能够很容易动态创建图形,并向客户端发送具有最佳配置的图形。
  用命令行程序创建图形
  在讨论一大堆ASP.NET代码之前,我们先执行一个简单的命令行程序做一个测试,然后使用这些源代码作为 ASP.NET 脚本的基础。实际上,两者的区别在于:命令行程序将图形保存在一个文件中,而ASP.NET 脚本将图形直接发送到客户端。
  举例的程序做什么呢?按照惯例,我们从众所周知的"Hello World" 程序开始,把这个文本信息输出到一个图形文件中,这个图形的大小要与当前选中的 "Hello World" 文本的字体和字号完全相同。
  下面的脚本pagecounter.cs是一个典型的简单命令行程序:如果忽略包围在其周围的必须的类代码,就只剩下程序运行时要调用的主函数了,这也正是生成图形的代码所在处:
  using System;
  using System.IO;
  using System.Drawing;
  using System.Drawing.Imaging;
   
  public class CTestBitmapFunctionality
  {
  public static void Main()
  {
  Bitmap newBitmap = null;
  Graphics g = null ;
   
  try
  {
  Font fontCounter = new Font("Lucida Sans Unicode", 12);
   
  // calculate size of the string.
  newBitmap = new Bitmap(1,1,PixelFormat.Format32bppARGB);
  g = Graphics.FromImage(newBitmap);
  SizeF stringSize = g.MeasureString("Hello World", fontCounter);
  int nWidth = (int)stringSize.Width;
  int nHeight = (int)stringSize.Height;
  g.Dispose();
  newBitmap.Dispose();
   
  newBitmap = new Bitmap(nWidth,nHeight,PixelFormat.Format32bppARGB);
  g = Graphics.FromImage(newBitmap);
  g.FillRectangle(new SolidBrush(Color.White),
  new Rectangle(0,0,nWidth,nHeight));
   
  g.DrawString("Hello World", fontCounter,
  new SolidBrush(Color.Black), 0, 0);
   
  newBitmap.Save("c:\\test.png", ImageFormat.PNG);
  }
  catch (Exception e)
  {
  Console.WriteLine(e.ToString());
  }
  finally
  {
  if (null != g) g.Dispose();
  if (null != newBitmap) newBitmap.Dispose();
  }
  }
  }
  在任何情况下,执行上面代码后,就会生成下面的图形test.png,它将存放在C驱动器上:
  
  我们来仔细研究一下源代码,看看这个图形是如何创建的。关键一点是生成的图形必须与文本 "Hello World" 的字体和字号相同。因此,首先要计算文本的尺寸,为此我们使用了一个尺寸为1 x 1的虚拟图形。计算结束之后,再废弃这个虚拟图形并生成一个适当尺寸的图形。
  源代码中有一点很有趣,这就是 Graphics 对象。要创建一个位图时,用这个对象做什么呢?奥妙在于:这是可以向其中绘图的上下文环境。我们可以在屏幕上、打印机上和内存中使用一个图形上下文环境,准确地说就是一个位图。图形的上下文环境使我们能够在任何设备上进行绘图操作,甚至是在虚拟设备上。
  接着,用DrawString将文本 "Hello World"按照规格输出到一个白色背景的矩形(用 FillRectangle创建的)中。图形完成后,将其保存在磁盘上。凡是亲自研究过图形文件格式的人都知道这有多困难,但是使用 GDI+ (图形设备接口)就不那么困难了,这只需要下面的简单命令就可以:
  newBitmap.Save("c:\\test.png", ImageFormat.PNG);
  如果用ImageFormat.JPEG替换ImageFormat.PNG,就可以得到一个 jpeg文件。这正是我们所期待的操作图形的最简单用法。
  例外处理代码也很有必要,因为有些函数会造成例外,比如没有足够的内存用来创建位图。而且,不要忘记释放图形和位图,这是编程的良好习惯,有始有终吗!最后,程序结束。
 &nb